@webiny/app-file-manager 5.37.8 → 5.38.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 (177) hide show
  1. package/BatchFileUploader.js +3 -1
  2. package/FileManagerFileTypePlugin.js +3 -1
  3. package/app.js +3 -1
  4. package/components/BottomInfoBar/BottomInfoBar.js +3 -1
  5. package/components/BottomInfoBar/ListStatus.js +3 -1
  6. package/components/BottomInfoBar/SupportedFileTypes.js +3 -1
  7. package/components/BottomInfoBar/index.js +3 -1
  8. package/components/BottomInfoBar/styled.js +3 -1
  9. package/components/BulkActions/ActionDelete.d.ts +4 -0
  10. package/components/BulkActions/ActionDelete.js +119 -0
  11. package/components/BulkActions/ActionDelete.js.map +1 -0
  12. package/components/BulkActions/ActionMove.d.ts +4 -0
  13. package/components/BulkActions/ActionMove.js +137 -0
  14. package/components/BulkActions/ActionMove.js.map +1 -0
  15. package/components/BulkActions/BulkActions.d.ts +3 -0
  16. package/components/BulkActions/BulkActions.js +51 -0
  17. package/components/BulkActions/BulkActions.js.map +1 -0
  18. package/components/BulkActions/BulkActions.styled.d.ts +15 -0
  19. package/components/BulkActions/BulkActions.styled.js +26 -0
  20. package/components/BulkActions/BulkActions.styled.js.map +1 -0
  21. package/components/BulkActions/index.d.ts +3 -0
  22. package/components/BulkActions/index.js +37 -0
  23. package/components/BulkActions/index.js.map +1 -0
  24. package/components/DropFilesHere/DropFilesHere.js +5 -7
  25. package/components/DropFilesHere/DropFilesHere.js.map +1 -1
  26. package/components/DropFilesHere/index.js +3 -1
  27. package/components/DropFilesHere/styled.js +9 -4
  28. package/components/DropFilesHere/styled.js.map +1 -1
  29. package/components/Empty/Empty.js +3 -1
  30. package/components/Empty/Empty.js.map +1 -1
  31. package/components/Empty/index.js +3 -1
  32. package/components/FileDetails/FileDetails.js +6 -4
  33. package/components/FileDetails/FileDetails.js.map +1 -1
  34. package/components/FileDetails/FileDetailsProvider.js +3 -1
  35. package/components/FileDetails/components/Actions.js +3 -1
  36. package/components/FileDetails/components/Aliases.js +3 -1
  37. package/components/FileDetails/components/BaseFields.js +3 -1
  38. package/components/FileDetails/components/Content.js +3 -1
  39. package/components/FileDetails/components/CreatedOn.js +3 -1
  40. package/components/FileDetails/components/Extensions.js +3 -1
  41. package/components/FileDetails/components/Flex.js +3 -1
  42. package/components/FileDetails/components/Footer.js +3 -1
  43. package/components/FileDetails/components/Header.js +3 -1
  44. package/components/FileDetails/components/Name.js +3 -1
  45. package/components/FileDetails/components/Preview.js +3 -1
  46. package/components/FileDetails/components/PreviewMeta.js +3 -1
  47. package/components/FileDetails/components/Tags.js +3 -1
  48. package/components/FileDetails/components/Thumbnail.js +3 -1
  49. package/components/FileDetails/components/TypeAndSize.js +3 -1
  50. package/components/FileDetails/components/actions/CopyUrl.js +3 -1
  51. package/components/FileDetails/components/actions/DeleteImage.js +3 -1
  52. package/components/FileDetails/components/actions/Download.js +3 -1
  53. package/components/FileDetails/components/actions/MoveTo.js +3 -1
  54. package/components/FileDetails/index.js +3 -1
  55. package/components/Grid/File.js +3 -1
  56. package/components/Grid/Grid.d.ts +2 -0
  57. package/components/Grid/Grid.js +14 -5
  58. package/components/Grid/Grid.js.map +1 -1
  59. package/components/Grid/index.js +3 -1
  60. package/components/Grid/styled.js +3 -1
  61. package/components/LayoutSwitch/LayoutSwitch.d.ts +2 -0
  62. package/components/LayoutSwitch/LayoutSwitch.js +34 -0
  63. package/components/LayoutSwitch/LayoutSwitch.js.map +1 -0
  64. package/components/LayoutSwitch/index.d.ts +1 -0
  65. package/components/LayoutSwitch/index.js +18 -0
  66. package/components/LayoutSwitch/index.js.map +1 -0
  67. package/components/NoPermission/NoPermission.js +3 -1
  68. package/components/NoPermission/index.js +3 -1
  69. package/components/NoPermission/styled.js +3 -1
  70. package/components/NoResults/NoResults.js +3 -1
  71. package/components/NoResults/index.js +3 -1
  72. package/components/NoResults/styled.js +3 -1
  73. package/components/Table/FolderActionDelete.js +3 -1
  74. package/components/Table/FolderActionEdit.js +3 -1
  75. package/components/Table/FolderActionManagePermissions.d.ts +6 -0
  76. package/components/Table/FolderActionManagePermissions.js +27 -0
  77. package/components/Table/FolderActionManagePermissions.js.map +1 -0
  78. package/components/Table/Name.d.ts +5 -1
  79. package/components/Table/Name.js +12 -3
  80. package/components/Table/Name.js.map +1 -1
  81. package/components/Table/RecordActionCopy.js +3 -1
  82. package/components/Table/RecordActionDelete.js +5 -3
  83. package/components/Table/RecordActionDelete.js.map +1 -1
  84. package/components/Table/RecordActionEdit.js +3 -1
  85. package/components/Table/RecordActionMove.js +3 -1
  86. package/components/Table/Table.d.ts +11 -13
  87. package/components/Table/Table.js +46 -15
  88. package/components/Table/Table.js.map +1 -1
  89. package/components/Table/index.js +3 -1
  90. package/components/Table/styled.d.ts +0 -1
  91. package/components/Table/styled.js +3 -3
  92. package/components/Table/styled.js.map +1 -1
  93. package/components/Title/Title.js +3 -1
  94. package/components/Title/index.js +3 -1
  95. package/components/Title/styled.js +3 -1
  96. package/components/UploadStatus/UploadStatus.js +3 -1
  97. package/components/UploadStatus/index.js +3 -1
  98. package/components/UploadStatus/styled.js +3 -1
  99. package/constants.js +3 -1
  100. package/contexts/FileProvider.js +3 -1
  101. package/getFileTypePlugin.js +3 -1
  102. package/hooks/useCopyFile.js +3 -1
  103. package/hooks/useDeleteFile.js +3 -1
  104. package/hooks/useFile.js +3 -1
  105. package/hooks/useFileDetails.js +3 -1
  106. package/hooks/useFileModel.js +3 -1
  107. package/hooks/useMoveFileToFolder.js +3 -1
  108. package/index.js +3 -1
  109. package/modules/FileManagerApiProvider/FileManagerApiContext/FileManagerApiContext.js +5 -3
  110. package/modules/FileManagerApiProvider/FileManagerApiContext/FileManagerApiContext.js.map +1 -1
  111. package/modules/FileManagerApiProvider/FileManagerApiContext/FileModelContext.js +3 -1
  112. package/modules/FileManagerApiProvider/FileManagerApiContext/getFileUploader.js +3 -1
  113. package/modules/FileManagerApiProvider/FileManagerApiContext/index.js +3 -1
  114. package/modules/FileManagerApiProvider/FileManagerApiContext/useFileManagerApi.js +3 -1
  115. package/modules/FileManagerApiProvider/graphql.js +3 -1
  116. package/modules/FileManagerApiProvider/index.js +3 -1
  117. package/modules/FileManagerRenderer/FileManagerView/FileManagerView.js +41 -33
  118. package/modules/FileManagerRenderer/FileManagerView/FileManagerView.js.map +1 -1
  119. package/modules/FileManagerRenderer/FileManagerView/FileManagerViewConfig.d.ts +12 -0
  120. package/modules/FileManagerRenderer/FileManagerView/FileManagerViewConfig.js +4 -1
  121. package/modules/FileManagerRenderer/FileManagerView/FileManagerViewConfig.js.map +1 -1
  122. package/modules/FileManagerRenderer/FileManagerView/LeftSidebar.js +3 -1
  123. package/modules/FileManagerRenderer/FileManagerView/NavigateFolderProvider.js +3 -1
  124. package/modules/FileManagerRenderer/FileManagerView/components/Filters.js +3 -1
  125. package/modules/FileManagerRenderer/FileManagerView/components/SearchWidget.js +3 -1
  126. package/modules/FileManagerRenderer/FileManagerView/components/TagsList/Empty.js +3 -1
  127. package/modules/FileManagerRenderer/FileManagerView/components/TagsList/Tag.js +3 -1
  128. package/modules/FileManagerRenderer/FileManagerView/components/TagsList/TagsList.js +3 -1
  129. package/modules/FileManagerRenderer/FileManagerView/components/TagsList/index.js +3 -1
  130. package/modules/FileManagerRenderer/FileManagerView/components/TagsList/styled.js +3 -1
  131. package/modules/FileManagerRenderer/FileManagerView/configComponents/Browser/BulkAction.d.ts +26 -0
  132. package/modules/FileManagerRenderer/FileManagerView/configComponents/Browser/BulkAction.js +96 -0
  133. package/modules/FileManagerRenderer/FileManagerView/configComponents/Browser/BulkAction.js.map +1 -0
  134. package/modules/FileManagerRenderer/FileManagerView/configComponents/Browser/Filter.js +3 -1
  135. package/modules/FileManagerRenderer/FileManagerView/configComponents/Browser/FilterByTags.js +3 -1
  136. package/modules/FileManagerRenderer/FileManagerView/configComponents/Browser/FiltersToWhere.js +3 -1
  137. package/modules/FileManagerRenderer/FileManagerView/configComponents/Browser/index.d.ts +13 -0
  138. package/modules/FileManagerRenderer/FileManagerView/configComponents/Browser/index.js +5 -1
  139. package/modules/FileManagerRenderer/FileManagerView/configComponents/Browser/index.js.map +1 -1
  140. package/modules/FileManagerRenderer/FileManagerView/configComponents/FileDetails/Field.js +3 -1
  141. package/modules/FileManagerRenderer/FileManagerView/configComponents/FileDetails/FieldDecorator.js +3 -1
  142. package/modules/FileManagerRenderer/FileManagerView/configComponents/FileDetails/Width.js +3 -1
  143. package/modules/FileManagerRenderer/FileManagerView/configComponents/FileDetails/index.js +3 -1
  144. package/modules/FileManagerRenderer/FileManagerView/index.js +3 -1
  145. package/modules/FileManagerRenderer/FileManagerView/outputFileSelectionError.js +3 -1
  146. package/modules/FileManagerRenderer/FileManagerViewProvider/FileManagerViewContext.d.ts +2 -1
  147. package/modules/FileManagerRenderer/FileManagerViewProvider/FileManagerViewContext.js +22 -21
  148. package/modules/FileManagerRenderer/FileManagerViewProvider/FileManagerViewContext.js.map +1 -1
  149. package/modules/FileManagerRenderer/FileManagerViewProvider/index.js +3 -1
  150. package/modules/FileManagerRenderer/FileManagerViewProvider/setSelection.d.ts +30 -0
  151. package/modules/FileManagerRenderer/FileManagerViewProvider/setSelection.js +115 -0
  152. package/modules/FileManagerRenderer/FileManagerViewProvider/setSelection.js.map +1 -0
  153. package/modules/FileManagerRenderer/FileManagerViewProvider/state.d.ts +4 -1
  154. package/modules/FileManagerRenderer/FileManagerViewProvider/state.js +4 -2
  155. package/modules/FileManagerRenderer/FileManagerViewProvider/state.js.map +1 -1
  156. package/modules/FileManagerRenderer/FileManagerViewProvider/useFileManagerView.js +3 -1
  157. package/modules/FileManagerRenderer/FileManagerViewProvider/useListFiles.d.ts +1 -2
  158. package/modules/FileManagerRenderer/FileManagerViewProvider/useListFiles.js +5 -9
  159. package/modules/FileManagerRenderer/FileManagerViewProvider/useListFiles.js.map +1 -1
  160. package/modules/FileManagerRenderer/FileManagerViewProvider/useTags.js +3 -1
  161. package/modules/FileManagerRenderer/filters/FilterByType.js +3 -1
  162. package/modules/FileManagerRenderer/index.js +10 -1
  163. package/modules/FileManagerRenderer/index.js.map +1 -1
  164. package/modules/FileTypes/fileDefault.js +3 -1
  165. package/modules/FileTypes/fileImage/EditAction.js +3 -1
  166. package/modules/FileTypes/fileImage/index.js +3 -1
  167. package/modules/FileTypes/index.js +3 -1
  168. package/modules/Settings/graphql.js +4 -2
  169. package/modules/Settings/graphql.js.map +1 -1
  170. package/modules/Settings/index.js +3 -1
  171. package/modules/Settings/plugins/installation.js +3 -1
  172. package/modules/Settings/plugins/permissionRenderer/FileManagerPermissions.js +3 -1
  173. package/modules/Settings/plugins/permissionRenderer/index.js +3 -1
  174. package/modules/Settings/views/FileManagerSettings.js +3 -1
  175. package/package.json +17 -16
  176. package/tagsHelpers.js +3 -1
  177. package/types.js +3 -1
@@ -8,18 +8,20 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.FileManagerViewProvider = exports.FileManagerViewContext = void 0;
9
9
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
10
  var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
11
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
12
11
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
13
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
14
14
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
15
15
  var _react = _interopRequireWildcard(require("react"));
16
16
  var _omit = _interopRequireDefault(require("lodash/omit"));
17
+ var _appAdmin = require("@webiny/app-admin");
17
18
  var _ = require("../../..");
18
19
  var _state = require("./state");
19
20
  var _sorting = require("@webiny/app-aco/sorting");
20
21
  var _appAco = require("@webiny/app-aco");
21
22
  var _useListFiles2 = require("./useListFiles");
22
23
  var _useTags = require("./useTags");
24
+ var _setSelection = require("./setSelection");
23
25
  var _constants = require("../../../constants");
24
26
  var _excluded = ["children"];
25
27
  var FileManagerViewContext = /*#__PURE__*/_react.default.createContext(undefined);
@@ -40,6 +42,7 @@ var getCurrentFolderList = function getCurrentFolderList(folders, currentFolderI
40
42
  var FileManagerViewProvider = function FileManagerViewProvider(_ref) {
41
43
  var children = _ref.children,
42
44
  props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
45
+ var shiftKeyPressed = (0, _appAdmin.useShiftKey)();
43
46
  var modifiers = {
44
47
  scope: props.scope,
45
48
  own: props.own,
@@ -61,14 +64,7 @@ var FileManagerViewProvider = function FileManagerViewProvider(_ref) {
61
64
  var _useListFiles = (0, _useListFiles2.useListFiles)({
62
65
  folderId: currentFolderId,
63
66
  modifiers: modifiers,
64
- state: state,
65
- onFirstLoad: function onFirstLoad(meta) {
66
- setState(function (state) {
67
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, state), {}, {
68
- hasPreviouslyUploadedFiles: meta.totalCount > 0
69
- });
70
- });
71
- }
67
+ state: state
72
68
  }),
73
69
  loading = _useListFiles.loading,
74
70
  files = _useListFiles.files,
@@ -127,6 +123,7 @@ var FileManagerViewProvider = function FileManagerViewProvider(_ref) {
127
123
  var isRoot = folder ? folder.id === _constants.ROOT_FOLDER : false;
128
124
  setState(function (state) {
129
125
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, state), {}, {
126
+ selection: {},
130
127
  filters: undefined,
131
128
  searchQuery: "",
132
129
  activeTags: [],
@@ -459,7 +456,7 @@ var FileManagerViewProvider = function FileManagerViewProvider(_ref) {
459
456
  };
460
457
  var context = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _omit.default)(state, ["activeTags"])), {}, {
461
458
  accept: props.accept,
462
- areFilesSelectable: Boolean(props.onChange),
459
+ hasOnSelectCallback: Boolean(props.onChange),
463
460
  createFile: createFile,
464
461
  deleteFile: deleteFile,
465
462
  files: files,
@@ -524,7 +521,8 @@ var FileManagerViewProvider = function FileManagerViewProvider(_ref) {
524
521
  setState(function (state) {
525
522
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, state), {}, {
526
523
  selected: [],
527
- filters: data
524
+ filters: data,
525
+ selection: {}
528
526
  });
529
527
  });
530
528
  },
@@ -596,17 +594,18 @@ var FileManagerViewProvider = function FileManagerViewProvider(_ref) {
596
594
  },
597
595
  toggleSelected: function toggleSelected(file) {
598
596
  setState(function (state) {
599
- var existingIndex = state.selected.findIndex(function (item) {
600
- return item.id === file.id;
597
+ return (0, _setSelection.setSelection)({
598
+ state: state,
599
+ files: files,
600
+ toggledFile: file,
601
+ shiftKeyPressed: shiftKeyPressed
601
602
  });
602
- var selected = state.selected;
603
- if (existingIndex < 0) {
604
- selected.push(file);
605
- } else {
606
- selected.splice(existingIndex, 1);
607
- }
603
+ });
604
+ },
605
+ deselectAll: function deselectAll() {
606
+ setState(function (state) {
608
607
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, state), {}, {
609
- selected: selected
608
+ selected: []
610
609
  });
611
610
  });
612
611
  },
@@ -617,4 +616,6 @@ var FileManagerViewProvider = function FileManagerViewProvider(_ref) {
617
616
  value: context
618
617
  }, children);
619
618
  };
620
- exports.FileManagerViewProvider = FileManagerViewProvider;
619
+ exports.FileManagerViewProvider = FileManagerViewProvider;
620
+
621
+ //# sourceMappingURL=FileManagerViewContext.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_omit","_interopRequireDefault","_","_state","_sorting","_appAco","_useListFiles2","_useTags","_constants","_excluded","FileManagerViewContext","React","createContext","undefined","exports","getCurrentFolderList","folders","currentFolderId","toLowerCase","ROOT_FOLDER","filter","folder","parentId","FileManagerViewProvider","_ref","children","props","_objectWithoutProperties2","default","modifiers","scope","own","accept","fileManager","useFileManagerApi","_useFolders","useFolders","originalFolders","foldersLoading","loading","_useNavigateFolder","useNavigateFolder","_useNavigateFolder$cu","navigateToFolder","tags","useTags","_useState","useState","initializeState","_useState2","_slicedToArray2","state","setState","_useListFiles","useListFiles","folderId","onFirstLoad","meta","_objectSpread2","hasPreviouslyUploadedFiles","totalCount","files","listFiles","setFiles","getListVariables","useEffect","loadFiles","searchQuery","filters","activeTags","listSort","tagsFilterMode","_ref2","_asyncToGenerator2","_regeneratorRuntime2","mark","_callee","action","params","queryVariables","wrap","_callee$","_context","prev","next","INIT","abrupt","isSearch","Boolean","length","stop","_x","_x2","apply","arguments","loadMoreFiles","cursor","after","resetSearchParameters","find","id","isRoot","searchLabel","concat","title","_useMemo","useMemo","subFolders","sortTableItems","name","currentFolder","listTitle","getFile","_ref3","_callee2","fileInState","file","_callee2$","_context2","loadingFileDetails","sent","prevFiles","fileIndex","findIndex","_toConsumableArray2","slice","_x3","getSettings","_ref4","_callee3","settings","_callee3$","_context3","createFile","_ref5","_callee4","data","newFile","_callee4$","_context4","addScopePrefix","location","removeScopePrefix","_x4","updateFile","_ref6","_callee5","_data$tags","newTags","_callee5$","_context5","tag","some","t","addTags","index","_x5","_x6","deleteFile","_ref7","_callee6","_callee6$","_context6","_x7","uploadFile","_ref8","_callee7","options","_args7","_callee7$","_context7","onProgress","_x8","moveFileToFolder","_ref9","_callee8","fileId","_callee8$","_context8","_x9","_x10","map","replace","context","omit","areFilesSelectable","onChange","hideFileDetails","showingFileDetails","hideFilters","showingFilters","isListLoading","LIST","isListLoadingMore","LIST_MORE","multiple","value","onClose","onUploadCompletion","setDragging","dragging","setFilters","selected","setFolderId","setListSort","sort","setListTable","flag","listTable","setSearchQuery","search","setSelected","showFileDetails","useCallback","showFilters","allTags","filterMode","setFilterMode","mode","setActiveTags","toggleSelected","existingIndex","item","push","splice","createElement","Provider"],"sources":["FileManagerViewContext.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport omit from \"lodash/omit\";\nimport { FileItem } from \"@webiny/app-admin/types\";\nimport { FileTag } from \"~/types\";\nimport { useFileManagerApi } from \"~/index\";\nimport { initializeState, State } from \"./state\";\nimport { FolderItem, ListMeta, ListSearchRecordsSort } from \"@webiny/app-aco/types\";\nimport { UploadOptions } from \"@webiny/app/types\";\nimport { sortTableItems } from \"@webiny/app-aco/sorting\";\nimport { useFolders, useNavigateFolder } from \"@webiny/app-aco\";\nimport { ListFilesQueryVariables } from \"~/modules/FileManagerApiProvider/graphql\";\nimport { useListFiles } from \"./useListFiles\";\nimport { useTags } from \"./useTags\";\nimport { ROOT_FOLDER } from \"~/constants\";\n\ntype PublicState = Omit<State, \"activeTags\">;\n\nexport interface FileManagerViewContext<TFileItem extends FileItem = FileItem> extends PublicState {\n accept: string[];\n createFile: (data: TFileItem) => Promise<TFileItem | undefined>;\n deleteFile: (id: string) => Promise<void>;\n files: FileItem[];\n folderId: string;\n folders: FolderItem[];\n getFile: (id: string) => Promise<TFileItem | undefined>;\n hideFileDetails: () => void;\n hideFilters: () => void;\n isListLoading: boolean;\n isListLoadingMore: boolean;\n areFilesSelectable: boolean;\n listTitle: string;\n loadMoreFiles: () => void;\n meta: ListMeta | undefined;\n moveFileToFolder: (fileId: string, folderId: string) => Promise<void>;\n multiple: boolean;\n onClose: () => void;\n onChange: Function;\n onUploadCompletion: (files: FileItem[]) => void;\n own: boolean;\n scope?: string;\n setDragging: (state: boolean) => void;\n setFilters: (data: Record<string, any>) => void;\n setFolderId: (folderId: string) => void;\n setListSort: (state: ListSearchRecordsSort) => void;\n setListTable: (mode: boolean) => void;\n setSearchQuery: (query: string) => void;\n setSelected: (files: TFileItem[]) => void;\n showFileDetails: (id: string) => void;\n showFilters: () => void;\n tags: {\n allTags: FileTag[];\n activeTags: string[];\n setActiveTags: (tags: string[]) => void;\n filterMode: \"AND\" | \"OR\";\n setFilterMode(mode: \"AND\" | \"OR\"): void;\n loading: boolean;\n };\n toggleSelected: (file: TFileItem) => void;\n updateFile: (id: string, data: Partial<TFileItem>) => Promise<void>;\n uploadFile: (file: File, options?: UploadFileOptions) => Promise<TFileItem | undefined>;\n}\n\nexport const FileManagerViewContext = React.createContext<FileManagerViewContext | undefined>(\n undefined\n);\n\nconst getCurrentFolderList = (\n folders?: FolderItem[] | null,\n currentFolderId?: string\n): FolderItem[] | [] => {\n if (!folders) {\n return [];\n }\n if (!currentFolderId || currentFolderId.toLowerCase() === ROOT_FOLDER) {\n return folders.filter(\n folder => !folder.parentId || folder.parentId.toLowerCase() === ROOT_FOLDER\n );\n }\n return folders.filter(folder => folder.parentId === currentFolderId);\n};\n\nexport interface FileManagerViewProviderProps {\n onChange?: Function;\n onClose?: () => void;\n multiple?: boolean;\n accept: 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 children?: React.ReactNode;\n}\n\ntype UploadFileOptions = Pick<UploadOptions, \"onProgress\">;\n\nexport type Loading<T extends string> = { [P in T]?: boolean };\nexport type LoadingActions = \"INIT\" | \"LIST\" | \"LIST_MORE\";\n\nexport const FileManagerViewProvider: React.VFC<FileManagerViewProviderProps> = ({\n children,\n ...props\n}) => {\n const modifiers = { scope: props.scope, own: props.own, accept: props.accept };\n const fileManager = useFileManagerApi();\n const { folders: originalFolders, loading: foldersLoading } = useFolders();\n const { currentFolderId = ROOT_FOLDER, navigateToFolder } = useNavigateFolder();\n const tags = useTags(modifiers);\n const [state, setState] = useState(initializeState());\n\n const { loading, files, meta, listFiles, setFiles, getListVariables } = useListFiles({\n folderId: currentFolderId,\n modifiers,\n state,\n onFirstLoad(meta) {\n setState(state => ({\n ...state,\n hasPreviouslyUploadedFiles: meta.totalCount > 0\n }));\n }\n });\n\n useEffect(() => {\n loadFiles(\"INIT\");\n }, []);\n\n useEffect(() => {\n loadFiles(\"LIST\");\n }, [state.searchQuery, state.filters, state.activeTags, state.listSort, state.tagsFilterMode]);\n\n const loadFiles = async (action: LoadingActions, params?: Partial<ListFilesQueryVariables>) => {\n if (loading.INIT || loading[action]) {\n return;\n }\n const queryVariables = getListVariables();\n await listFiles({ ...queryVariables, ...params });\n setState(state => ({\n ...state,\n isSearch: Boolean(state.searchQuery || state.filters || state.activeTags.length)\n }));\n };\n\n const loadMoreFiles = () => {\n if (meta?.cursor) {\n loadFiles(\"LIST_MORE\", { after: meta.cursor });\n }\n };\n\n const resetSearchParameters = (folderId: string) => {\n const folder = (originalFolders || []).find(folder => folder.id === folderId);\n const isRoot = folder ? folder.id === ROOT_FOLDER : false;\n\n setState(state => ({\n ...state,\n filters: undefined,\n searchQuery: \"\",\n activeTags: [],\n searchLabel:\n folder && !isRoot ? `Search files in \"${folder.title}\"` : `Search all files`\n }));\n };\n\n const { folders, listTitle } = useMemo(() => {\n // Filter sub-folders and sort them accordingly\n const subFolders = getCurrentFolderList(originalFolders, currentFolderId);\n const folders = sortTableItems(subFolders, state.listSort, { name: \"title\" });\n\n // Get current folder name\n const currentFolder = originalFolders?.find(folder => folder.id === currentFolderId);\n\n return { folders, listTitle: currentFolder?.title || \"\" };\n }, [originalFolders, currentFolderId, state.listSort]);\n\n const getFile = async (id: string) => {\n const fileInState = files.find(file => file.id === id);\n\n if (fileInState) {\n return fileInState;\n }\n\n setState(state => ({\n ...state,\n loadingFileDetails: true\n }));\n\n const file = await fileManager.getFile(id);\n\n if (!file) {\n // No file found - must be deleted by previous operation\n setFiles(files => files.filter(file => file.id !== id));\n } else {\n setFiles(prevFiles => {\n const fileIndex = prevFiles.findIndex(file => file.id === id);\n\n // No record found in the list - must be added by previous operation\n if (fileIndex === -1) {\n return [...prevFiles, file];\n }\n\n // Updating record found in the list\n return [\n ...prevFiles.slice(0, fileIndex),\n {\n ...prevFiles[fileIndex],\n ...file\n },\n ...prevFiles.slice(fileIndex + 1)\n ];\n });\n }\n\n setState(state => ({\n ...state,\n loadingFileDetails: false\n }));\n\n return file;\n };\n\n const getSettings = async () => {\n const settings = await fileManager.getSettings();\n setState(state => ({\n ...state,\n settings\n }));\n };\n\n useEffect(() => {\n getSettings();\n }, []);\n\n const createFile = async (data: FileItem) => {\n if (data.tags) {\n data.tags = addScopePrefix(data.tags);\n }\n\n if (props.scope) {\n data.tags = [...(data.tags || []), props.scope];\n }\n\n const meta = {\n location: {\n folderId: currentFolderId || ROOT_FOLDER\n }\n };\n\n const newFile = await fileManager.createFile(data, meta);\n if (newFile) {\n newFile.tags = removeScopePrefix(newFile.tags || []);\n setFiles(files => [newFile, ...files]);\n }\n return newFile;\n };\n\n const updateFile = async (id: string, data: Partial<FileItem>) => {\n const file = files.find(file => file.id === id);\n if (!file) {\n return;\n }\n\n const newTags = data.tags?.filter(tag => !tags.tags.some(t => t.tag === tag));\n\n if (data.tags) {\n data.tags = addScopePrefix(data.tags);\n }\n\n if (props.scope) {\n data.tags = [...(data.tags || []), props.scope];\n }\n\n await fileManager.updateFile(id, data);\n\n if (newTags) {\n tags.addTags(newTags);\n }\n\n setFiles(files => {\n const index = files.findIndex(file => file.id === id);\n if (index === -1) {\n return files;\n }\n\n const newFile = {\n ...data,\n tags: removeScopePrefix(data.tags)\n };\n\n return [\n ...files.slice(0, index),\n { ...files[index], ...newFile },\n ...files.slice(index + 1)\n ];\n });\n };\n\n const deleteFile = async (id: string) => {\n await fileManager.deleteFile(id);\n\n setFiles(files => {\n const index = files.findIndex(file => file.id === id);\n if (index === -1) {\n return files;\n }\n\n return [...files.slice(0, index), ...files.slice(index + 1)];\n });\n };\n\n /**\n * Upload native browser File\n * @see https://developer.mozilla.org/en-US/docs/Web/API/File\n * @param file\n * @param options\n */\n const uploadFile: FileManagerViewContext[\"uploadFile\"] = async (file, options = {}) => {\n const tags = props.scope ? [props.scope] : [];\n const meta = {\n location: {\n folderId: currentFolderId || ROOT_FOLDER\n }\n };\n\n const newFile = await fileManager.uploadFile(file, meta, {\n tags,\n onProgress: options.onProgress\n });\n if (newFile) {\n newFile.tags = removeScopePrefix(newFile.tags);\n setFiles(files => [newFile, ...files]);\n }\n return newFile;\n };\n\n const moveFileToFolder: FileManagerViewContext[\"moveFileToFolder\"] = async (\n fileId,\n folderId\n ) => {\n await updateFile(fileId, { location: { folderId } });\n setFiles(files => files.filter(file => file.id !== fileId));\n };\n\n const addScopePrefix = (tags: string[] = []) => {\n if (!props.scope) {\n return tags;\n }\n\n return tags.map(tag => `${props.scope}:${tag}`);\n };\n\n const removeScopePrefix = (tags: string[] = []) => {\n if (!props.scope) {\n return tags;\n }\n\n return tags\n .filter(tag => tag !== props.scope)\n .map(tag => {\n return props.scope ? tag.replace(`${props.scope}:`, \"\") : tag;\n });\n };\n\n const context: FileManagerViewContext = {\n ...omit(state, [\"activeTags\"]),\n accept: props.accept,\n areFilesSelectable: Boolean(props.onChange),\n createFile,\n deleteFile,\n files,\n folderId: currentFolderId,\n folders: state.isSearch ? [] : folders,\n getFile,\n hideFileDetails() {\n setState(state => ({\n ...state,\n showingFileDetails: null\n }));\n },\n hideFilters() {\n setState(state => ({\n ...state,\n filters: undefined,\n showingFilters: false\n }));\n },\n isListLoading: Boolean(\n loading.INIT || foldersLoading.INIT || loading.LIST || foldersLoading.LIST\n ),\n isListLoadingMore: Boolean(loading.LIST_MORE),\n listTitle,\n loadMoreFiles,\n meta,\n moveFileToFolder,\n multiple: Boolean(props.multiple),\n onChange(value: any[]) {\n if (typeof props.onChange === \"function\") {\n props.onChange(value);\n }\n\n context.onClose();\n },\n onClose() {\n if (typeof props.onClose === \"function\") {\n props.onClose();\n }\n },\n onUploadCompletion(files) {\n setState(state => ({\n ...state,\n hasPreviouslyUploadedFiles: true\n }));\n\n if (typeof props.onUploadCompletion === \"function\") {\n props.onUploadCompletion(files);\n context.onClose();\n }\n },\n own: Boolean(props.own),\n scope: props.scope,\n setDragging(value = true) {\n setState(state => ({\n ...state,\n dragging: value\n }));\n },\n setFilters(data) {\n setState(state => ({\n ...state,\n selected: [],\n filters: data\n }));\n },\n setFolderId(folderId) {\n resetSearchParameters(folderId);\n navigateToFolder(folderId);\n },\n setListSort(sort: ListSearchRecordsSort) {\n setState(state => ({\n ...state,\n listSort: sort\n }));\n },\n setListTable(flag) {\n setState(state => ({\n ...state,\n listTable: flag\n }));\n },\n setSearchQuery(search) {\n setState(state => ({\n ...state,\n searchQuery: search\n }));\n },\n setSelected(files: FileItem[]) {\n setState(state => ({\n ...state,\n selected: files\n }));\n },\n showFileDetails: useCallback((id: string) => {\n setState(state => ({\n ...state,\n showingFileDetails: id\n }));\n }, []),\n showFilters() {\n setState(state => ({\n ...state,\n showingFilters: true\n }));\n },\n tags: {\n loading: tags.loading,\n allTags: tags.tags,\n activeTags: state.activeTags,\n filterMode: state.tagsFilterMode,\n setFilterMode(mode) {\n setState(state => ({\n ...state,\n tagsFilterMode: mode\n }));\n },\n setActiveTags(activeTags) {\n setState(state => ({\n ...state,\n activeTags\n }));\n }\n },\n toggleSelected(file: FileItem) {\n setState(state => {\n const existingIndex = state.selected.findIndex(item => item.id === file.id);\n const selected = state.selected;\n\n if (existingIndex < 0) {\n selected.push(file);\n } else {\n selected.splice(existingIndex, 1);\n }\n\n return {\n ...state,\n selected\n };\n });\n },\n updateFile,\n uploadFile\n };\n\n return (\n <FileManagerViewContext.Provider value={context}>\n {children}\n </FileManagerViewContext.Provider>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_omit","_interopRequireDefault","_appAdmin","_","_state","_sorting","_appAco","_useListFiles2","_useTags","_setSelection","_constants","_excluded","FileManagerViewContext","React","createContext","undefined","exports","getCurrentFolderList","folders","currentFolderId","toLowerCase","ROOT_FOLDER","filter","folder","parentId","FileManagerViewProvider","_ref","children","props","_objectWithoutProperties2","default","shiftKeyPressed","useShiftKey","modifiers","scope","own","accept","fileManager","useFileManagerApi","_useFolders","useFolders","originalFolders","foldersLoading","loading","_useNavigateFolder","useNavigateFolder","_useNavigateFolder$cu","navigateToFolder","tags","useTags","_useState","useState","initializeState","_useState2","_slicedToArray2","state","setState","_useListFiles","useListFiles","folderId","files","meta","listFiles","setFiles","getListVariables","useEffect","loadFiles","searchQuery","filters","activeTags","listSort","tagsFilterMode","_ref2","_asyncToGenerator2","_regeneratorRuntime2","mark","_callee","action","params","queryVariables","wrap","_callee$","_context","prev","next","INIT","abrupt","_objectSpread2","isSearch","Boolean","length","stop","_x","_x2","apply","arguments","loadMoreFiles","cursor","after","resetSearchParameters","find","id","isRoot","selection","searchLabel","concat","title","_useMemo","useMemo","subFolders","sortTableItems","name","currentFolder","listTitle","getFile","_ref3","_callee2","fileInState","file","_callee2$","_context2","loadingFileDetails","sent","prevFiles","fileIndex","findIndex","_toConsumableArray2","slice","_x3","getSettings","_ref4","_callee3","settings","_callee3$","_context3","createFile","_ref5","_callee4","data","newFile","_callee4$","_context4","addScopePrefix","location","removeScopePrefix","_x4","updateFile","_ref6","_callee5","_data$tags","newTags","_callee5$","_context5","tag","some","t","addTags","index","_x5","_x6","deleteFile","_ref7","_callee6","_callee6$","_context6","_x7","uploadFile","_ref8","_callee7","options","_args7","_callee7$","_context7","onProgress","_x8","moveFileToFolder","_ref9","_callee8","fileId","_callee8$","_context8","_x9","_x10","map","replace","context","omit","hasOnSelectCallback","onChange","hideFileDetails","showingFileDetails","hideFilters","showingFilters","isListLoading","LIST","isListLoadingMore","LIST_MORE","multiple","value","onClose","onUploadCompletion","hasPreviouslyUploadedFiles","setDragging","dragging","setFilters","selected","setFolderId","setListSort","sort","setListTable","flag","listTable","setSearchQuery","search","setSelected","showFileDetails","useCallback","showFilters","allTags","filterMode","setFilterMode","mode","setActiveTags","toggleSelected","setSelection","toggledFile","deselectAll","createElement","Provider"],"sources":["FileManagerViewContext.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport omit from \"lodash/omit\";\nimport { useShiftKey } from \"@webiny/app-admin\";\nimport { FileItem } from \"@webiny/app-admin/types\";\nimport { FileTag } from \"~/types\";\nimport { useFileManagerApi } from \"~/index\";\nimport { initializeState, State } from \"./state\";\nimport { FolderItem, ListMeta, ListSearchRecordsSort } from \"@webiny/app-aco/types\";\nimport { UploadOptions } from \"@webiny/app/types\";\nimport { sortTableItems } from \"@webiny/app-aco/sorting\";\nimport { useFolders, useNavigateFolder } from \"@webiny/app-aco\";\nimport { ListFilesQueryVariables } from \"~/modules/FileManagerApiProvider/graphql\";\nimport { useListFiles } from \"./useListFiles\";\nimport { useTags } from \"./useTags\";\nimport { setSelection } from \"./setSelection\";\nimport { ROOT_FOLDER } from \"~/constants\";\n\ntype PublicState = Omit<State, \"activeTags\">;\n\nexport interface FileManagerViewContext<TFileItem extends FileItem = FileItem> extends PublicState {\n accept: string[];\n createFile: (data: TFileItem) => Promise<TFileItem | undefined>;\n deleteFile: (id: string) => Promise<void>;\n files: FileItem[];\n folderId: string;\n folders: FolderItem[];\n getFile: (id: string) => Promise<TFileItem | undefined>;\n hideFileDetails: () => void;\n hideFilters: () => void;\n isListLoading: boolean;\n isListLoadingMore: boolean;\n hasOnSelectCallback: boolean;\n listTitle: string;\n loadMoreFiles: () => void;\n meta: ListMeta | undefined;\n moveFileToFolder: (fileId: string, folderId: string) => Promise<void>;\n multiple: boolean;\n onClose: () => void;\n onChange: Function;\n onUploadCompletion: (files: FileItem[]) => void;\n own: boolean;\n scope?: string;\n setDragging: (state: boolean) => void;\n setFilters: (data: Record<string, any>) => void;\n setFolderId: (folderId: string) => void;\n setListSort: (state: ListSearchRecordsSort) => void;\n setListTable: (mode: boolean) => void;\n setSearchQuery: (query: string) => void;\n setSelected: (files: TFileItem[]) => void;\n showFileDetails: (id: string) => void;\n showFilters: () => void;\n tags: {\n allTags: FileTag[];\n activeTags: string[];\n setActiveTags: (tags: string[]) => void;\n filterMode: \"AND\" | \"OR\";\n setFilterMode(mode: \"AND\" | \"OR\"): void;\n loading: boolean;\n };\n toggleSelected: (file: TFileItem) => void;\n deselectAll: () => void;\n updateFile: (id: string, data: Partial<TFileItem>) => Promise<void>;\n uploadFile: (file: File, options?: UploadFileOptions) => Promise<TFileItem | undefined>;\n}\n\nexport const FileManagerViewContext = React.createContext<FileManagerViewContext | undefined>(\n undefined\n);\n\nconst getCurrentFolderList = (\n folders?: FolderItem[] | null,\n currentFolderId?: string\n): FolderItem[] | [] => {\n if (!folders) {\n return [];\n }\n if (!currentFolderId || currentFolderId.toLowerCase() === ROOT_FOLDER) {\n return folders.filter(\n folder => !folder.parentId || folder.parentId.toLowerCase() === ROOT_FOLDER\n );\n }\n return folders.filter(folder => folder.parentId === currentFolderId);\n};\n\nexport interface FileManagerViewProviderProps {\n onChange?: Function;\n onClose?: () => void;\n multiple?: boolean;\n accept: 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 children?: React.ReactNode;\n}\n\ntype UploadFileOptions = Pick<UploadOptions, \"onProgress\">;\n\nexport type Loading<T extends string> = { [P in T]?: boolean };\nexport type LoadingActions = \"INIT\" | \"LIST\" | \"LIST_MORE\";\n\nexport const FileManagerViewProvider: React.VFC<FileManagerViewProviderProps> = ({\n children,\n ...props\n}) => {\n const shiftKeyPressed = useShiftKey();\n const modifiers = { scope: props.scope, own: props.own, accept: props.accept };\n const fileManager = useFileManagerApi();\n const { folders: originalFolders, loading: foldersLoading } = useFolders();\n const { currentFolderId = ROOT_FOLDER, navigateToFolder } = useNavigateFolder();\n const tags = useTags(modifiers);\n const [state, setState] = useState(initializeState());\n\n const { loading, files, meta, listFiles, setFiles, getListVariables } = useListFiles({\n folderId: currentFolderId,\n modifiers,\n state\n });\n\n useEffect(() => {\n loadFiles(\"INIT\");\n }, []);\n\n useEffect(() => {\n loadFiles(\"LIST\");\n }, [state.searchQuery, state.filters, state.activeTags, state.listSort, state.tagsFilterMode]);\n\n const loadFiles = async (action: LoadingActions, params?: Partial<ListFilesQueryVariables>) => {\n if (loading.INIT || loading[action]) {\n return;\n }\n const queryVariables = getListVariables();\n await listFiles({ ...queryVariables, ...params });\n setState(state => ({\n ...state,\n isSearch: Boolean(state.searchQuery || state.filters || state.activeTags.length)\n }));\n };\n\n const loadMoreFiles = () => {\n if (meta?.cursor) {\n loadFiles(\"LIST_MORE\", { after: meta.cursor });\n }\n };\n\n const resetSearchParameters = (folderId: string) => {\n const folder = (originalFolders || []).find(folder => folder.id === folderId);\n const isRoot = folder ? folder.id === ROOT_FOLDER : false;\n\n setState(state => ({\n ...state,\n selection: {},\n filters: undefined,\n searchQuery: \"\",\n activeTags: [],\n searchLabel:\n folder && !isRoot ? `Search files in \"${folder.title}\"` : `Search all files`\n }));\n };\n\n const { folders, listTitle } = useMemo(() => {\n // Filter sub-folders and sort them accordingly\n const subFolders = getCurrentFolderList(originalFolders, currentFolderId);\n const folders = sortTableItems(subFolders, state.listSort, { name: \"title\" });\n\n // Get current folder name\n const currentFolder = originalFolders?.find(folder => folder.id === currentFolderId);\n\n return { folders, listTitle: currentFolder?.title || \"\" };\n }, [originalFolders, currentFolderId, state.listSort]);\n\n const getFile = async (id: string) => {\n const fileInState = files.find(file => file.id === id);\n\n if (fileInState) {\n return fileInState;\n }\n\n setState(state => ({\n ...state,\n loadingFileDetails: true\n }));\n\n const file = await fileManager.getFile(id);\n\n if (!file) {\n // No file found - must be deleted by previous operation\n setFiles(files => files.filter(file => file.id !== id));\n } else {\n setFiles(prevFiles => {\n const fileIndex = prevFiles.findIndex(file => file.id === id);\n\n // No record found in the list - must be added by previous operation\n if (fileIndex === -1) {\n return [...prevFiles, file];\n }\n\n // Updating record found in the list\n return [\n ...prevFiles.slice(0, fileIndex),\n {\n ...prevFiles[fileIndex],\n ...file\n },\n ...prevFiles.slice(fileIndex + 1)\n ];\n });\n }\n\n setState(state => ({\n ...state,\n loadingFileDetails: false\n }));\n\n return file;\n };\n\n const getSettings = async () => {\n const settings = await fileManager.getSettings();\n setState(state => ({\n ...state,\n settings\n }));\n };\n\n useEffect(() => {\n getSettings();\n }, []);\n\n const createFile = async (data: FileItem) => {\n if (data.tags) {\n data.tags = addScopePrefix(data.tags);\n }\n\n if (props.scope) {\n data.tags = [...(data.tags || []), props.scope];\n }\n\n const meta = {\n location: {\n folderId: currentFolderId || ROOT_FOLDER\n }\n };\n\n const newFile = await fileManager.createFile(data, meta);\n if (newFile) {\n newFile.tags = removeScopePrefix(newFile.tags || []);\n setFiles(files => [newFile, ...files]);\n }\n return newFile;\n };\n\n const updateFile = async (id: string, data: Partial<FileItem>) => {\n const file = files.find(file => file.id === id);\n if (!file) {\n return;\n }\n\n const newTags = data.tags?.filter(tag => !tags.tags.some(t => t.tag === tag));\n\n if (data.tags) {\n data.tags = addScopePrefix(data.tags);\n }\n\n if (props.scope) {\n data.tags = [...(data.tags || []), props.scope];\n }\n\n await fileManager.updateFile(id, data);\n\n if (newTags) {\n tags.addTags(newTags);\n }\n\n setFiles(files => {\n const index = files.findIndex(file => file.id === id);\n if (index === -1) {\n return files;\n }\n\n const newFile = {\n ...data,\n tags: removeScopePrefix(data.tags)\n };\n\n return [\n ...files.slice(0, index),\n { ...files[index], ...newFile },\n ...files.slice(index + 1)\n ];\n });\n };\n\n const deleteFile = async (id: string) => {\n await fileManager.deleteFile(id);\n\n setFiles(files => {\n const index = files.findIndex(file => file.id === id);\n if (index === -1) {\n return files;\n }\n\n return [...files.slice(0, index), ...files.slice(index + 1)];\n });\n };\n\n /**\n * Upload native browser File\n * @see https://developer.mozilla.org/en-US/docs/Web/API/File\n * @param file\n * @param options\n */\n const uploadFile: FileManagerViewContext[\"uploadFile\"] = async (file, options = {}) => {\n const tags = props.scope ? [props.scope] : [];\n const meta = {\n location: {\n folderId: currentFolderId || ROOT_FOLDER\n }\n };\n\n const newFile = await fileManager.uploadFile(file, meta, {\n tags,\n onProgress: options.onProgress\n });\n if (newFile) {\n newFile.tags = removeScopePrefix(newFile.tags);\n setFiles(files => [newFile, ...files]);\n }\n return newFile;\n };\n\n const moveFileToFolder: FileManagerViewContext[\"moveFileToFolder\"] = async (\n fileId,\n folderId\n ) => {\n await updateFile(fileId, { location: { folderId } });\n setFiles(files => files.filter(file => file.id !== fileId));\n };\n\n const addScopePrefix = (tags: string[] = []) => {\n if (!props.scope) {\n return tags;\n }\n\n return tags.map(tag => `${props.scope}:${tag}`);\n };\n\n const removeScopePrefix = (tags: string[] = []) => {\n if (!props.scope) {\n return tags;\n }\n\n return tags\n .filter(tag => tag !== props.scope)\n .map(tag => {\n return props.scope ? tag.replace(`${props.scope}:`, \"\") : tag;\n });\n };\n\n const context: FileManagerViewContext = {\n ...omit(state, [\"activeTags\"]),\n accept: props.accept,\n hasOnSelectCallback: Boolean(props.onChange),\n createFile,\n deleteFile,\n files,\n folderId: currentFolderId,\n folders: state.isSearch ? [] : folders,\n getFile,\n hideFileDetails() {\n setState(state => ({\n ...state,\n showingFileDetails: null\n }));\n },\n hideFilters() {\n setState(state => ({\n ...state,\n filters: undefined,\n showingFilters: false\n }));\n },\n isListLoading: Boolean(\n loading.INIT || foldersLoading.INIT || loading.LIST || foldersLoading.LIST\n ),\n isListLoadingMore: Boolean(loading.LIST_MORE),\n listTitle,\n loadMoreFiles,\n meta,\n moveFileToFolder,\n multiple: Boolean(props.multiple),\n onChange(value: any[]) {\n if (typeof props.onChange === \"function\") {\n props.onChange(value);\n }\n\n context.onClose();\n },\n onClose() {\n if (typeof props.onClose === \"function\") {\n props.onClose();\n }\n },\n onUploadCompletion(files) {\n setState(state => ({\n ...state,\n hasPreviouslyUploadedFiles: true\n }));\n\n if (typeof props.onUploadCompletion === \"function\") {\n props.onUploadCompletion(files);\n context.onClose();\n }\n },\n own: Boolean(props.own),\n scope: props.scope,\n setDragging(value = true) {\n setState(state => ({\n ...state,\n dragging: value\n }));\n },\n setFilters(data) {\n setState(state => ({\n ...state,\n selected: [],\n filters: data,\n selection: {}\n }));\n },\n setFolderId(folderId) {\n resetSearchParameters(folderId);\n navigateToFolder(folderId);\n },\n setListSort(sort: ListSearchRecordsSort) {\n setState(state => ({\n ...state,\n listSort: sort\n }));\n },\n setListTable(flag) {\n setState(state => ({\n ...state,\n listTable: flag\n }));\n },\n setSearchQuery(search) {\n setState(state => ({\n ...state,\n searchQuery: search\n }));\n },\n setSelected(files: FileItem[]) {\n setState(state => ({\n ...state,\n selected: files\n }));\n },\n showFileDetails: useCallback((id: string) => {\n setState(state => ({\n ...state,\n showingFileDetails: id\n }));\n }, []),\n showFilters() {\n setState(state => ({\n ...state,\n showingFilters: true\n }));\n },\n tags: {\n loading: tags.loading,\n allTags: tags.tags,\n activeTags: state.activeTags,\n filterMode: state.tagsFilterMode,\n setFilterMode(mode) {\n setState(state => ({\n ...state,\n tagsFilterMode: mode\n }));\n },\n setActiveTags(activeTags) {\n setState(state => ({\n ...state,\n activeTags\n }));\n }\n },\n toggleSelected(file: FileItem) {\n setState(state =>\n setSelection({\n state,\n files,\n toggledFile: file,\n shiftKeyPressed\n })\n );\n },\n deselectAll() {\n setState(state => ({ ...state, selected: [] }));\n },\n updateFile,\n uploadFile\n };\n\n return (\n <FileManagerViewContext.Provider value={context}>\n {children}\n </FileManagerViewContext.Provider>\n );\n};\n"],"mappings":"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"}
@@ -24,4 +24,6 @@ Object.keys(_FileManagerViewContext).forEach(function (key) {
24
24
  return _FileManagerViewContext[key];
25
25
  }
26
26
  });
27
- });
27
+ });
28
+
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,30 @@
1
+ import { FileItem } from "@webiny/app-admin/types";
2
+ import { State } from "./state";
3
+ interface GetSelectionParams {
4
+ state: State;
5
+ files: FileItem[];
6
+ toggledFile: FileItem;
7
+ shiftKeyPressed: boolean;
8
+ }
9
+ export declare const setSelection: ({ state, files, toggledFile, shiftKeyPressed }: GetSelectionParams) => {
10
+ selection: {
11
+ anchor?: number | undefined;
12
+ focus?: number | undefined;
13
+ };
14
+ selected: FileItem[];
15
+ activeTags: string[];
16
+ dragging: boolean;
17
+ filters: Record<string, any> | undefined;
18
+ isSearch: boolean;
19
+ limit: number;
20
+ listSort?: import("../../FileManagerApiProvider/graphql").ListFilesSort | undefined;
21
+ listTable: boolean;
22
+ loadingFileDetails: boolean;
23
+ searchLabel: string;
24
+ searchQuery: string;
25
+ settings: import("../../../types").Settings | undefined;
26
+ showingFileDetails: string | null;
27
+ showingFilters: boolean;
28
+ tagsFilterMode: "AND" | "OR";
29
+ };
30
+ export {};
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.setSelection = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+ var getFileIndex = function getFileIndex(files, file) {
12
+ if (!file) {
13
+ return undefined;
14
+ }
15
+ var index = files.findIndex(function (f) {
16
+ return f.id === file.id;
17
+ });
18
+ return index > -1 ? index : undefined;
19
+ };
20
+ var isAnchorSet = function isAnchorSet(anchor) {
21
+ return anchor !== undefined;
22
+ };
23
+ var normalizeSelection = function normalizeSelection(start, end) {
24
+ if (end === undefined) {
25
+ return [start, undefined];
26
+ }
27
+ return [Math.min(start, end), Math.max(start, end)];
28
+ };
29
+ var setSelection = function setSelection(_ref) {
30
+ var state = _ref.state,
31
+ files = _ref.files,
32
+ toggledFile = _ref.toggledFile,
33
+ shiftKeyPressed = _ref.shiftKeyPressed;
34
+ // Check if the `toggledFile` is already in the `selected` files.
35
+ var existingIndex = getFileIndex(state.selected, toggledFile);
36
+ var toggledFileIndex = getFileIndex(files, toggledFile);
37
+ var selected = new Set((0, _toConsumableArray2.default)(state.selected));
38
+ var selection = (0, _objectSpread2.default)({}, state.selection);
39
+
40
+ // Add a single file to selection.
41
+ if (existingIndex === undefined && !shiftKeyPressed) {
42
+ selected.add(toggledFile);
43
+ selection.anchor = toggledFileIndex;
44
+ selection.focus = undefined;
45
+ }
46
+
47
+ // Remove a single file from selection.
48
+ if (existingIndex !== undefined && !shiftKeyPressed) {
49
+ selected.delete(toggledFile);
50
+ var prevSelectedFile = Array.from(selected.values()).pop();
51
+ selection.anchor = getFileIndex(files, prevSelectedFile);
52
+ selection.focus = undefined;
53
+ }
54
+
55
+ // Handle range selection ("shift" key is pressed).
56
+ if (isAnchorSet(selection.anchor) && shiftKeyPressed) {
57
+ var prevFocus = selection.focus;
58
+ selection.focus = toggledFileIndex;
59
+ var _normalizeSelection = normalizeSelection(selection.anchor, toggledFileIndex),
60
+ _normalizeSelection2 = (0, _slicedToArray2.default)(_normalizeSelection, 2),
61
+ newAnchor = _normalizeSelection2[0],
62
+ newFocus = _normalizeSelection2[1];
63
+ var _normalizeSelection3 = normalizeSelection(selection.anchor, prevFocus),
64
+ _normalizeSelection4 = (0, _slicedToArray2.default)(_normalizeSelection3, 2),
65
+ oldAnchor = _normalizeSelection4[0],
66
+ oldFocus = _normalizeSelection4[1];
67
+ var selectedRange = files.filter(function (_, index) {
68
+ if (index < newAnchor) {
69
+ return false;
70
+ }
71
+ if (newFocus && index > newFocus) {
72
+ return false;
73
+ }
74
+ return true;
75
+ });
76
+ selected.forEach(function (file) {
77
+ var index = getFileIndex(files, file);
78
+ var selectionAnchor = selection.anchor;
79
+ var mustNotBeUndefined = [index, oldFocus, newFocus, selectionAnchor];
80
+ if (mustNotBeUndefined.includes(undefined)) {
81
+ return;
82
+ }
83
+
84
+ /**
85
+ * If the new selection is smaller than the previous selection, we need to deselect items
86
+ * that are now outside the new, smaller, selection.
87
+ */
88
+ // @ts-expect-error We already checked for `undefined` above.
89
+ if (newFocus < oldFocus && index > newFocus && index <= oldFocus) {
90
+ selected.delete(file);
91
+ }
92
+
93
+ /**
94
+ * If the previous selection was made backwards (`oldAnchor` is essentially pointing to the shift-clicked item
95
+ * of the previous selection, which is the `focus` of the selection, but it's normalized, so it becomes an anchor),
96
+ * and the current selection is made forward (selectionAnchor > oldAnchor), we need to deselect items between the
97
+ * old selection anchor and the old selection focus (which is also the new selection anchor).
98
+ */
99
+ // @ts-expect-error We already checked for `undefined` above.
100
+ if (selectionAnchor > oldAnchor && index >= oldAnchor && index < oldFocus) {
101
+ selected.delete(file);
102
+ }
103
+ });
104
+ selectedRange.forEach(function (file) {
105
+ selected.add(file);
106
+ });
107
+ }
108
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, state), {}, {
109
+ selection: selection,
110
+ selected: Array.from(selected.values())
111
+ });
112
+ };
113
+ exports.setSelection = setSelection;
114
+
115
+ //# sourceMappingURL=setSelection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getFileIndex","files","file","undefined","index","findIndex","f","id","isAnchorSet","anchor","normalizeSelection","start","end","Math","min","max","setSelection","_ref","state","toggledFile","shiftKeyPressed","existingIndex","selected","toggledFileIndex","Set","_toConsumableArray2","default","selection","_objectSpread2","add","focus","delete","prevSelectedFile","Array","from","values","pop","prevFocus","_normalizeSelection","_normalizeSelection2","_slicedToArray2","newAnchor","newFocus","_normalizeSelection3","_normalizeSelection4","oldAnchor","oldFocus","selectedRange","filter","_","forEach","selectionAnchor","mustNotBeUndefined","includes","exports"],"sources":["setSelection.ts"],"sourcesContent":["import { FileItem } from \"@webiny/app-admin/types\";\nimport { State } from \"./state\";\n\ninterface GetSelectionParams {\n state: State;\n files: FileItem[];\n toggledFile: FileItem;\n shiftKeyPressed: boolean;\n}\n\nconst getFileIndex = (files: FileItem[], file: FileItem | undefined) => {\n if (!file) {\n return undefined;\n }\n\n const index = files.findIndex(f => f.id === file.id);\n return index > -1 ? index : undefined;\n};\n\nconst isAnchorSet = (anchor: number | undefined): anchor is number => {\n return anchor !== undefined;\n};\n\nconst normalizeSelection = (\n start: number,\n end: number | undefined\n): [number, number | undefined] => {\n if (end === undefined) {\n return [start, undefined];\n }\n\n return [Math.min(start, end), Math.max(start, end)];\n};\n\nexport const setSelection = ({\n state,\n files,\n toggledFile,\n shiftKeyPressed\n}: GetSelectionParams) => {\n // Check if the `toggledFile` is already in the `selected` files.\n const existingIndex = getFileIndex(state.selected, toggledFile);\n const toggledFileIndex = getFileIndex(files, toggledFile) as number;\n const selected = new Set([...state.selected]);\n const selection = { ...state.selection };\n\n // Add a single file to selection.\n if (existingIndex === undefined && !shiftKeyPressed) {\n selected.add(toggledFile);\n selection.anchor = toggledFileIndex;\n selection.focus = undefined;\n }\n\n // Remove a single file from selection.\n if (existingIndex !== undefined && !shiftKeyPressed) {\n selected.delete(toggledFile);\n const prevSelectedFile = Array.from(selected.values()).pop();\n selection.anchor = getFileIndex(files, prevSelectedFile);\n selection.focus = undefined;\n }\n\n // Handle range selection (\"shift\" key is pressed).\n if (isAnchorSet(selection.anchor) && shiftKeyPressed) {\n const prevFocus = selection.focus;\n selection.focus = toggledFileIndex;\n\n const [newAnchor, newFocus] = normalizeSelection(selection.anchor, toggledFileIndex);\n const [oldAnchor, oldFocus] = normalizeSelection(selection.anchor, prevFocus);\n\n const selectedRange = files.filter((_, index) => {\n if (index < newAnchor) {\n return false;\n }\n\n if (newFocus && index > newFocus) {\n return false;\n }\n\n return true;\n });\n\n selected.forEach(file => {\n const index = getFileIndex(files, file);\n const selectionAnchor = selection.anchor;\n\n const mustNotBeUndefined = [index, oldFocus, newFocus, selectionAnchor];\n if (mustNotBeUndefined.includes(undefined)) {\n return;\n }\n\n /**\n * If the new selection is smaller than the previous selection, we need to deselect items\n * that are now outside the new, smaller, selection.\n */\n // @ts-expect-error We already checked for `undefined` above.\n if (newFocus < oldFocus && index > newFocus && index <= oldFocus) {\n selected.delete(file);\n }\n\n /**\n * If the previous selection was made backwards (`oldAnchor` is essentially pointing to the shift-clicked item\n * of the previous selection, which is the `focus` of the selection, but it's normalized, so it becomes an anchor),\n * and the current selection is made forward (selectionAnchor > oldAnchor), we need to deselect items between the\n * old selection anchor and the old selection focus (which is also the new selection anchor).\n */\n // @ts-expect-error We already checked for `undefined` above.\n if (selectionAnchor > oldAnchor && index >= oldAnchor && index < oldFocus) {\n selected.delete(file);\n }\n });\n\n selectedRange.forEach(file => {\n selected.add(file);\n });\n }\n\n return {\n ...state,\n selection,\n selected: Array.from(selected.values())\n };\n};\n"],"mappings":"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"}
@@ -5,7 +5,6 @@ export interface State {
5
5
  activeTags: string[];
6
6
  dragging: boolean;
7
7
  filters: Record<string, any> | undefined;
8
- hasPreviouslyUploadedFiles: boolean | null;
9
8
  isSearch: boolean;
10
9
  limit: number;
11
10
  listSort?: ListFilesSort;
@@ -14,6 +13,10 @@ export interface State {
14
13
  searchLabel: string;
15
14
  searchQuery: string;
16
15
  selected: FileItem[];
16
+ selection: {
17
+ anchor?: number | undefined;
18
+ focus?: number | undefined;
19
+ };
17
20
  settings: Settings | undefined;
18
21
  showingFileDetails: string | null;
19
22
  showingFilters: boolean;
@@ -22,7 +22,6 @@ var initializeState = function initializeState() {
22
22
  dragging: false,
23
23
  isSearch: false,
24
24
  filters: undefined,
25
- hasPreviouslyUploadedFiles: null,
26
25
  limit: 50,
27
26
  listSort: [],
28
27
  listTable: false,
@@ -30,10 +29,13 @@ var initializeState = function initializeState() {
30
29
  searchLabel: "",
31
30
  searchQuery: "",
32
31
  selected: [],
32
+ selection: {},
33
33
  settings: undefined,
34
34
  showingFileDetails: null,
35
35
  showingFilters: false,
36
36
  tagsFilterMode: "OR"
37
37
  };
38
38
  };
39
- exports.initializeState = initializeState;
39
+ exports.initializeState = initializeState;
40
+
41
+ //# sourceMappingURL=state.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["DEFAULT_SCOPE","getScopeWhereParams","scope","tags_not_startsWith","tags_startsWith","exports","initializeState","activeTags","dragging","isSearch","filters","undefined","hasPreviouslyUploadedFiles","limit","listSort","listTable","loadingFileDetails","searchLabel","searchQuery","selected","settings","showingFileDetails","showingFilters","tagsFilterMode"],"sources":["state.ts"],"sourcesContent":["import { FileItem } from \"@webiny/app-admin/types\";\nimport { ListFilesSort } from \"~/modules/FileManagerApiProvider/graphql\";\nimport { Settings } from \"~/types\";\n\nexport interface State {\n activeTags: string[];\n dragging: boolean;\n filters: Record<string, any> | undefined;\n hasPreviouslyUploadedFiles: boolean | null;\n isSearch: boolean;\n limit: number;\n listSort?: ListFilesSort;\n listTable: boolean;\n loadingFileDetails: boolean;\n searchLabel: string;\n searchQuery: string;\n selected: FileItem[];\n settings: Settings | undefined;\n showingFileDetails: string | null;\n showingFilters: boolean;\n tagsFilterMode: \"AND\" | \"OR\";\n}\nconst DEFAULT_SCOPE = \"scope:\";\n\nexport const getScopeWhereParams = (scope: string | undefined) => {\n if (!scope) {\n return {\n tags_not_startsWith: DEFAULT_SCOPE\n };\n }\n return {\n tags_startsWith: scope\n };\n};\n\nexport const initializeState = (): State => {\n return {\n activeTags: [],\n dragging: false,\n isSearch: false,\n filters: undefined,\n hasPreviouslyUploadedFiles: null,\n limit: 50,\n listSort: [],\n listTable: false,\n loadingFileDetails: false,\n searchLabel: \"\",\n searchQuery: \"\",\n selected: [],\n settings: undefined,\n showingFileDetails: null,\n showingFilters: false,\n tagsFilterMode: \"OR\"\n };\n};\n"],"mappings":";;;;;;AAsBA,IAAMA,aAAa,GAAG,QAAQ;AAEvB,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAIC,KAAyB,EAAK;EAC9D,IAAI,CAACA,KAAK,EAAE;IACR,OAAO;MACHC,mBAAmB,EAAEH;IACzB,CAAC;EACL;EACA,OAAO;IACHI,eAAe,EAAEF;EACrB,CAAC;AACL,CAAC;AAACG,OAAA,CAAAJ,mBAAA,GAAAA,mBAAA;AAEK,IAAMK,eAAe,GAAG,SAAlBA,eAAeA,CAAA,EAAgB;EACxC,OAAO;IACHC,UAAU,EAAE,EAAE;IACdC,QAAQ,EAAE,KAAK;IACfC,QAAQ,EAAE,KAAK;IACfC,OAAO,EAAEC,SAAS;IAClBC,0BAA0B,EAAE,IAAI;IAChCC,KAAK,EAAE,EAAE;IACTC,QAAQ,EAAE,EAAE;IACZC,SAAS,EAAE,KAAK;IAChBC,kBAAkB,EAAE,KAAK;IACzBC,WAAW,EAAE,EAAE;IACfC,WAAW,EAAE,EAAE;IACfC,QAAQ,EAAE,EAAE;IACZC,QAAQ,EAAET,SAAS;IACnBU,kBAAkB,EAAE,IAAI;IACxBC,cAAc,EAAE,KAAK;IACrBC,cAAc,EAAE;EACpB,CAAC;AACL,CAAC;AAAClB,OAAA,CAAAC,eAAA,GAAAA,eAAA"}
1
+ {"version":3,"names":["DEFAULT_SCOPE","getScopeWhereParams","scope","tags_not_startsWith","tags_startsWith","exports","initializeState","activeTags","dragging","isSearch","filters","undefined","limit","listSort","listTable","loadingFileDetails","searchLabel","searchQuery","selected","selection","settings","showingFileDetails","showingFilters","tagsFilterMode"],"sources":["state.ts"],"sourcesContent":["import { FileItem } from \"@webiny/app-admin/types\";\nimport { ListFilesSort } from \"~/modules/FileManagerApiProvider/graphql\";\nimport { Settings } from \"~/types\";\n\nexport interface State {\n activeTags: string[];\n dragging: boolean;\n filters: Record<string, any> | undefined;\n isSearch: boolean;\n limit: number;\n listSort?: ListFilesSort;\n listTable: boolean;\n loadingFileDetails: boolean;\n searchLabel: string;\n searchQuery: string;\n selected: FileItem[];\n selection: {\n anchor?: number | undefined;\n focus?: number | undefined;\n };\n settings: Settings | undefined;\n showingFileDetails: string | null;\n showingFilters: boolean;\n tagsFilterMode: \"AND\" | \"OR\";\n}\nconst DEFAULT_SCOPE = \"scope:\";\n\nexport const getScopeWhereParams = (scope: string | undefined) => {\n if (!scope) {\n return {\n tags_not_startsWith: DEFAULT_SCOPE\n };\n }\n return {\n tags_startsWith: scope\n };\n};\n\nexport const initializeState = (): State => {\n return {\n activeTags: [],\n dragging: false,\n isSearch: false,\n filters: undefined,\n limit: 50,\n listSort: [],\n listTable: false,\n loadingFileDetails: false,\n searchLabel: \"\",\n searchQuery: \"\",\n selected: [],\n selection: {},\n settings: undefined,\n showingFileDetails: null,\n showingFilters: false,\n tagsFilterMode: \"OR\"\n };\n};\n"],"mappings":";;;;;;AAyBA,IAAMA,aAAa,GAAG,QAAQ;AAEvB,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAIC,KAAyB,EAAK;EAC9D,IAAI,CAACA,KAAK,EAAE;IACR,OAAO;MACHC,mBAAmB,EAAEH;IACzB,CAAC;EACL;EACA,OAAO;IACHI,eAAe,EAAEF;EACrB,CAAC;AACL,CAAC;AAACG,OAAA,CAAAJ,mBAAA,GAAAA,mBAAA;AAEK,IAAMK,eAAe,GAAG,SAAlBA,eAAeA,CAAA,EAAgB;EACxC,OAAO;IACHC,UAAU,EAAE,EAAE;IACdC,QAAQ,EAAE,KAAK;IACfC,QAAQ,EAAE,KAAK;IACfC,OAAO,EAAEC,SAAS;IAClBC,KAAK,EAAE,EAAE;IACTC,QAAQ,EAAE,EAAE;IACZC,SAAS,EAAE,KAAK;IAChBC,kBAAkB,EAAE,KAAK;IACzBC,WAAW,EAAE,EAAE;IACfC,WAAW,EAAE,EAAE;IACfC,QAAQ,EAAE,EAAE;IACZC,SAAS,EAAE,CAAC,CAAC;IACbC,QAAQ,EAAET,SAAS;IACnBU,kBAAkB,EAAE,IAAI;IACxBC,cAAc,EAAE,KAAK;IACrBC,cAAc,EAAE;EACpB,CAAC;AACL,CAAC;AAAClB,OAAA,CAAAC,eAAA,GAAAA,eAAA"}
@@ -12,4 +12,6 @@ function useFileManagerView() {
12
12
  throw new Error("useFileManagerView() must be used within a FileManagerViewProvider");
13
13
  }
14
14
  return context;
15
- }
15
+ }
16
+
17
+ //# sourceMappingURL=useFileManagerView.js.map
@@ -12,9 +12,8 @@ interface UseListFilesParams {
12
12
  };
13
13
  folderId: string;
14
14
  state: State;
15
- onFirstLoad: (meta: ListMeta) => void;
16
15
  }
17
- export declare function useListFiles({ modifiers, folderId, state, onFirstLoad }: UseListFilesParams): {
16
+ export declare function useListFiles({ modifiers, folderId, state }: UseListFilesParams): {
18
17
  files: FileItem[];
19
18
  loading: Loading<LoadingActions>;
20
19
  meta: ListMeta | undefined;
@@ -29,14 +29,12 @@ function nonEmptyArray(value) {
29
29
  function useListFiles(_ref) {
30
30
  var modifiers = _ref.modifiers,
31
31
  folderId = _ref.folderId,
32
- state = _ref.state,
33
- onFirstLoad = _ref.onFirstLoad;
32
+ state = _ref.state;
34
33
  var _useSecurity = (0, _appSecurity.useSecurity)(),
35
34
  identity = _useSecurity.identity;
36
35
  var fileManager = (0, _FileManagerApiContext.useFileManagerApi)();
37
36
  var _useFolders = (0, _appAco.useFolders)(),
38
37
  getDescendantFolders = _useFolders.getDescendantFolders;
39
- var firstLoad = (0, _react.useRef)(true);
40
38
  var _useState = (0, _react.useState)(undefined),
41
39
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
42
40
  meta = _useState2[0],
@@ -103,11 +101,7 @@ function useListFiles(_ref) {
103
101
  INIT: false
104
102
  }, action, false));
105
103
  });
106
- if (firstLoad.current) {
107
- firstLoad.current = false;
108
- onFirstLoad(fmResponse.meta);
109
- }
110
- case 15:
104
+ case 14:
111
105
  case "end":
112
106
  return _context.stop();
113
107
  }
@@ -171,4 +165,6 @@ function useListFiles(_ref) {
171
165
  listFiles: listFiles,
172
166
  getListVariables: getListVariables
173
167
  };
174
- }
168
+ }
169
+
170
+ //# sourceMappingURL=useListFiles.js.map