@anji-dashing/dam-solution-v2 5.8.173

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 (259) hide show
  1. package/README.md +53 -0
  2. package/build/AssetType/AddFieldProperties.d.ts +10 -0
  3. package/build/AssetType/AddFieldProperties.js +359 -0
  4. package/build/AssetType/AssetTemplatesTable.d.ts +10 -0
  5. package/build/AssetType/AssetTemplatesTable.js +172 -0
  6. package/build/AssetType/CreateAssetTemplate.d.ts +3 -0
  7. package/build/AssetType/CreateAssetTemplate.js +70 -0
  8. package/build/AssetType/CreateOrEditAssetTemplate.d.ts +1 -0
  9. package/build/AssetType/CreateOrEditAssetTemplate.js +100 -0
  10. package/build/AssetType/DraggedField.d.ts +14 -0
  11. package/build/AssetType/DraggedField.js +58 -0
  12. package/build/AssetType/EditAssetTemplate.d.ts +5 -0
  13. package/build/AssetType/EditAssetTemplate.js +257 -0
  14. package/build/AssetType/FieldsSection.d.ts +14 -0
  15. package/build/AssetType/FieldsSection.js +268 -0
  16. package/build/AssetType/assetTemplatesContainer.d.ts +2 -0
  17. package/build/AssetType/assetTemplatesContainer.js +71 -0
  18. package/build/AssetType/fieldProperties/DateField.d.ts +5 -0
  19. package/build/AssetType/fieldProperties/DateField.js +23 -0
  20. package/build/AssetType/fieldProperties/NumberField.d.ts +5 -0
  21. package/build/AssetType/fieldProperties/NumberField.js +91 -0
  22. package/build/AssetType/fieldProperties/OptionsField.d.ts +6 -0
  23. package/build/AssetType/fieldProperties/OptionsField.js +55 -0
  24. package/build/AssetType/fieldProperties/TextField.d.ts +5 -0
  25. package/build/AssetType/fieldProperties/TextField.js +92 -0
  26. package/build/AssetType/index.d.ts +11 -0
  27. package/build/AssetType/index.js +25 -0
  28. package/build/AssetType/routes.d.ts +3 -0
  29. package/build/AssetType/routes.js +17 -0
  30. package/build/BookView/ProductDescription.d.ts +4 -0
  31. package/build/BookView/ProductDescription.js +20 -0
  32. package/build/BookView/bookDetail.d.ts +4 -0
  33. package/build/BookView/bookDetail.js +106 -0
  34. package/build/BookView/bookInfo.d.ts +4 -0
  35. package/build/BookView/bookInfo.js +17 -0
  36. package/build/BookView/description.d.ts +4 -0
  37. package/build/BookView/description.js +5 -0
  38. package/build/BookView/index.d.ts +10 -0
  39. package/build/BookView/index.js +23 -0
  40. package/build/CreateClient/CreateClientBtn.d.ts +14 -0
  41. package/build/CreateClient/CreateClientBtn.js +54 -0
  42. package/build/CreateClient/CreateClientForm.d.ts +15 -0
  43. package/build/CreateClient/CreateClientForm.js +347 -0
  44. package/build/CreateClient/index.d.ts +20 -0
  45. package/build/CreateClient/index.js +18 -0
  46. package/build/ImagePicker/MetaFieldOptions.d.ts +14 -0
  47. package/build/ImagePicker/MetaFieldOptions.js +75 -0
  48. package/build/ImagePicker/TestImagePickerModal.d.ts +8 -0
  49. package/build/ImagePicker/TestImagePickerModal.js +72 -0
  50. package/build/ImagePicker/TestImgFromMetaData.d.ts +7 -0
  51. package/build/ImagePicker/TestImgFromMetaData.js +82 -0
  52. package/build/ImagePicker/imagePickerComponent.d.ts +6 -0
  53. package/build/ImagePicker/imagePickerComponent.js +63 -0
  54. package/build/ImagePicker/index.d.ts +13 -0
  55. package/build/ImagePicker/index.js +24 -0
  56. package/build/ImagePicker/routes.d.ts +6 -0
  57. package/build/ImagePicker/routes.js +17 -0
  58. package/build/ImagePickerFilters/ImagePickerFiltersComponent.d.ts +8 -0
  59. package/build/ImagePickerFilters/ImagePickerFiltersComponent.js +223 -0
  60. package/build/ImagePickerFilters/index.d.ts +12 -0
  61. package/build/ImagePickerFilters/index.js +19 -0
  62. package/build/MyDrive/ActionBar.d.ts +8 -0
  63. package/build/MyDrive/ActionBar.js +190 -0
  64. package/build/MyDrive/AddDrive.d.ts +5 -0
  65. package/build/MyDrive/AddDrive.js +189 -0
  66. package/build/MyDrive/AddFolder.d.ts +11 -0
  67. package/build/MyDrive/AddFolder.js +165 -0
  68. package/build/MyDrive/BreadCrumbList.d.ts +10 -0
  69. package/build/MyDrive/BreadCrumbList.js +81 -0
  70. package/build/MyDrive/BulkUploadModal.d.ts +2 -0
  71. package/build/MyDrive/BulkUploadModal.js +324 -0
  72. package/build/MyDrive/DriveContainer.d.ts +14 -0
  73. package/build/MyDrive/DriveContainer.js +343 -0
  74. package/build/MyDrive/FileDownloadHistory.d.ts +7 -0
  75. package/build/MyDrive/FileDownloadHistory.js +107 -0
  76. package/build/MyDrive/FileMenuOptions.d.ts +11 -0
  77. package/build/MyDrive/FileMenuOptions.js +450 -0
  78. package/build/MyDrive/FilesGridView.d.ts +9 -0
  79. package/build/MyDrive/FilesGridView.js +25 -0
  80. package/build/MyDrive/FolderGridView.d.ts +20 -0
  81. package/build/MyDrive/FolderGridView.js +95 -0
  82. package/build/MyDrive/FolderListView.d.ts +26 -0
  83. package/build/MyDrive/FolderListView.js +226 -0
  84. package/build/MyDrive/FolderMenuOptions.d.ts +5 -0
  85. package/build/MyDrive/FolderMenuOptions.js +350 -0
  86. package/build/MyDrive/FolderTree.d.ts +8 -0
  87. package/build/MyDrive/FolderTree.js +479 -0
  88. package/build/MyDrive/ImageEditor/EditImage.d.ts +6 -0
  89. package/build/MyDrive/ImageEditor/EditImage.js +97 -0
  90. package/build/MyDrive/ImageEditor/EditImageModal.d.ts +8 -0
  91. package/build/MyDrive/ImageEditor/EditImageModal.js +30 -0
  92. package/build/MyDrive/ImageEditor/TuiImageEditor.d.ts +10 -0
  93. package/build/MyDrive/ImageEditor/TuiImageEditor.js +99 -0
  94. package/build/MyDrive/ImagePickerBreadCrumbList.d.ts +8 -0
  95. package/build/MyDrive/ImagePickerBreadCrumbList.js +35 -0
  96. package/build/MyDrive/ImagePickerDrive.d.ts +1 -0
  97. package/build/MyDrive/ImagePickerDrive.js +41 -0
  98. package/build/MyDrive/MyDriveMainContainer.d.ts +6 -0
  99. package/build/MyDrive/MyDriveMainContainer.js +63 -0
  100. package/build/MyDrive/SearchFilter.d.ts +8 -0
  101. package/build/MyDrive/SearchFilter.js +73 -0
  102. package/build/MyDrive/ShareBtn.d.ts +5 -0
  103. package/build/MyDrive/ShareBtn.js +19 -0
  104. package/build/MyDrive/ToggleView.d.ts +4 -0
  105. package/build/MyDrive/ToggleView.js +12 -0
  106. package/build/MyDrive/UploadStatusModal.d.ts +12 -0
  107. package/build/MyDrive/UploadStatusModal.js +52 -0
  108. package/build/MyDrive/fileDetails/CommentEntity.d.ts +8 -0
  109. package/build/MyDrive/fileDetails/CommentEntity.js +102 -0
  110. package/build/MyDrive/fileDetails/Comments.d.ts +6 -0
  111. package/build/MyDrive/fileDetails/Comments.js +65 -0
  112. package/build/MyDrive/fileDetails/Compliance.d.ts +2 -0
  113. package/build/MyDrive/fileDetails/Compliance.js +18 -0
  114. package/build/MyDrive/fileDetails/CreateComment.d.ts +7 -0
  115. package/build/MyDrive/fileDetails/CreateComment.js +48 -0
  116. package/build/MyDrive/fileDetails/Editor.d.ts +6 -0
  117. package/build/MyDrive/fileDetails/Editor.js +55 -0
  118. package/build/MyDrive/fileDetails/EmojiPicker.d.ts +5 -0
  119. package/build/MyDrive/fileDetails/EmojiPicker.js +6 -0
  120. package/build/MyDrive/fileDetails/FileDetails.d.ts +11 -0
  121. package/build/MyDrive/fileDetails/FileDetails.js +125 -0
  122. package/build/MyDrive/fileDetails/FileHeader.d.ts +7 -0
  123. package/build/MyDrive/fileDetails/FileHeader.js +27 -0
  124. package/build/MyDrive/fileDetails/FileViewer.d.ts +10 -0
  125. package/build/MyDrive/fileDetails/FileViewer.js +17 -0
  126. package/build/MyDrive/fileDetails/ImageOptions.d.ts +2 -0
  127. package/build/MyDrive/fileDetails/ImageOptions.js +44 -0
  128. package/build/MyDrive/fileDetails/ImageViewer.d.ts +6 -0
  129. package/build/MyDrive/fileDetails/ImageViewer.js +16 -0
  130. package/build/MyDrive/fileDetails/ManageFile.d.ts +7 -0
  131. package/build/MyDrive/fileDetails/ManageFile.js +34 -0
  132. package/build/MyDrive/fileDetails/MetaForm.d.ts +15 -0
  133. package/build/MyDrive/fileDetails/MetaForm.js +199 -0
  134. package/build/MyDrive/fileDetails/Metadata.d.ts +8 -0
  135. package/build/MyDrive/fileDetails/Metadata.js +52 -0
  136. package/build/MyDrive/fileDetails/PdfOptions.d.ts +9 -0
  137. package/build/MyDrive/fileDetails/PdfOptions.js +35 -0
  138. package/build/MyDrive/fileDetails/PdfViewer.d.ts +8 -0
  139. package/build/MyDrive/fileDetails/PdfViewer.js +18 -0
  140. package/build/MyDrive/fileDetails/Previewdetails.d.ts +10 -0
  141. package/build/MyDrive/fileDetails/Previewdetails.js +53 -0
  142. package/build/MyDrive/fileDetails/VideoPlayer.d.ts +4 -0
  143. package/build/MyDrive/fileDetails/VideoPlayer.js +21 -0
  144. package/build/MyDrive/files/AssetSelectionFormItem.d.ts +7 -0
  145. package/build/MyDrive/files/AssetSelectionFormItem.js +14 -0
  146. package/build/MyDrive/files/FolderTabs.d.ts +6 -0
  147. package/build/MyDrive/files/FolderTabs.js +90 -0
  148. package/build/MyDrive/files/MapFile.d.ts +9 -0
  149. package/build/MyDrive/files/MapFile.js +239 -0
  150. package/build/MyDrive/files/MoveToAnotherFolder.d.ts +9 -0
  151. package/build/MyDrive/files/MoveToAnotherFolder.js +67 -0
  152. package/build/MyDrive/filesListView.d.ts +2 -0
  153. package/build/MyDrive/filesListView.js +57 -0
  154. package/build/MyDrive/index.d.ts +16 -0
  155. package/build/MyDrive/index.js +50 -0
  156. package/build/MyDrive/routes.d.ts +10 -0
  157. package/build/MyDrive/routes.js +12 -0
  158. package/build/PenView/PenDetails.d.ts +4 -0
  159. package/build/PenView/PenDetails.js +114 -0
  160. package/build/PenView/ProductDescription.d.ts +5 -0
  161. package/build/PenView/ProductDescription.js +51 -0
  162. package/build/PenView/index.d.ts +10 -0
  163. package/build/PenView/index.js +23 -0
  164. package/build/RefreshKey/RefreshKeyBtn.d.ts +1 -0
  165. package/build/RefreshKey/RefreshKeyBtn.js +42 -0
  166. package/build/RefreshKey/index.d.ts +9 -0
  167. package/build/RefreshKey/index.js +23 -0
  168. package/build/ShoesView/ProductDescription.d.ts +4 -0
  169. package/build/ShoesView/ProductDescription.js +25 -0
  170. package/build/ShoesView/ShoeDetails.d.ts +4 -0
  171. package/build/ShoesView/ShoeDetails.js +96 -0
  172. package/build/ShoesView/index.d.ts +10 -0
  173. package/build/ShoesView/index.js +23 -0
  174. package/build/common/Button.d.ts +2 -0
  175. package/build/common/Button.js +18 -0
  176. package/build/common/CustomElements.d.ts +98 -0
  177. package/build/common/CustomElements.js +77 -0
  178. package/build/common/LoadMoreItems.d.ts +7 -0
  179. package/build/common/LoadMoreItems.js +33 -0
  180. package/build/common/RenderFormItem.d.ts +42 -0
  181. package/build/common/RenderFormItem.js +98 -0
  182. package/build/common/RenderThumnail.d.ts +7 -0
  183. package/build/common/RenderThumnail.js +6 -0
  184. package/build/common/deleteModal.d.ts +1 -0
  185. package/build/common/deleteModal.js +12 -0
  186. package/build/common/folders/TypeAndDateFilters.d.ts +13 -0
  187. package/build/common/folders/TypeAndDateFilters.js +66 -0
  188. package/build/common/folders/getFolderOrFileIcon.d.ts +2 -0
  189. package/build/common/folders/getFolderOrFileIcon.js +41 -0
  190. package/build/common/loader/CustomLoader.d.ts +7 -0
  191. package/build/common/loader/CustomLoader.js +8 -0
  192. package/build/common/loader/loader.d.ts +1 -0
  193. package/build/common/loader/loader.js +6 -0
  194. package/build/common/notifications.d.ts +2 -0
  195. package/build/common/notifications.js +30 -0
  196. package/build/common/steps.d.ts +4 -0
  197. package/build/common/steps.js +7 -0
  198. package/build/hocs/AppProvider.d.ts +3 -0
  199. package/build/hocs/AppProvider.js +11 -0
  200. package/build/hocs/DamConfigContext.d.ts +2 -0
  201. package/build/hocs/DamConfigContext.js +153 -0
  202. package/build/hocs/ThemeContext.d.ts +15 -0
  203. package/build/hocs/ThemeContext.js +131 -0
  204. package/build/hocs/ToastProvider.d.ts +2 -0
  205. package/build/hocs/ToastProvider.js +6 -0
  206. package/build/hocs/appConstants.d.ts +124 -0
  207. package/build/hocs/appConstants.js +211 -0
  208. package/build/hocs/configureAxios.d.ts +2 -0
  209. package/build/hocs/configureAxios.js +65 -0
  210. package/build/hocs/helpers.d.ts +17 -0
  211. package/build/hocs/helpers.js +201 -0
  212. package/build/index.d.ts +12 -0
  213. package/build/index.js +12 -0
  214. package/build/react-query/hooks/brand-hooks.d.ts +3 -0
  215. package/build/react-query/hooks/brand-hooks.js +10 -0
  216. package/build/react-query/hooks/folder-hooks.d.ts +7 -0
  217. package/build/react-query/hooks/folder-hooks.js +119 -0
  218. package/build/react-query/services/brand-services.d.ts +4 -0
  219. package/build/react-query/services/brand-services.js +41 -0
  220. package/build/react-query/services/file-services.d.ts +43 -0
  221. package/build/react-query/services/file-services.js +69 -0
  222. package/build/react-query/services/folder-services.d.ts +46 -0
  223. package/build/react-query/services/folder-services.js +87 -0
  224. package/build/react-query/services/image-picker-services.d.ts +5 -0
  225. package/build/react-query/services/image-picker-services.js +47 -0
  226. package/build/settings/InviteTeamModal.d.ts +12 -0
  227. package/build/settings/InviteTeamModal.js +174 -0
  228. package/build/settings/UpdateInvitationAccessType.d.ts +9 -0
  229. package/build/settings/UpdateInvitationAccessType.js +96 -0
  230. package/build/settings/getUserAvatar.d.ts +7 -0
  231. package/build/settings/getUserAvatar.js +11 -0
  232. package/build/style.css +1 -0
  233. package/build/types/assetType.d.ts +8 -0
  234. package/build/types/assetType.js +1 -0
  235. package/build/ui/pageTitle.d.ts +3 -0
  236. package/build/ui/pageTitle.js +4 -0
  237. package/build/utilities/FoldersContext.d.ts +16 -0
  238. package/build/utilities/FoldersContext.js +15 -0
  239. package/build/utilities/NavigatorProvider.d.ts +2 -0
  240. package/build/utilities/NavigatorProvider.js +10 -0
  241. package/build/utilities/constants/apiUrls.d.ts +97 -0
  242. package/build/utilities/constants/apiUrls.js +117 -0
  243. package/build/utilities/constants/imageUrls.d.ts +6 -0
  244. package/build/utilities/constants/imageUrls.js +6 -0
  245. package/build/utilities/constants/interface.d.ts +371 -0
  246. package/build/utilities/constants/interface.js +142 -0
  247. package/build/utilities/constants/messages.d.ts +55 -0
  248. package/build/utilities/constants/messages.js +55 -0
  249. package/build/utilities/constants/queryKeys.d.ts +16 -0
  250. package/build/utilities/constants/queryKeys.js +33 -0
  251. package/build/utilities/constants/routes.d.ts +22 -0
  252. package/build/utilities/constants/routes.js +22 -0
  253. package/build/utilities/helpers/validators.d.ts +12 -0
  254. package/build/utilities/helpers/validators.js +89 -0
  255. package/build/utilities/useAppNavigate.d.ts +2 -0
  256. package/build/utilities/useAppNavigate.js +35 -0
  257. package/build/utilities/useAppParams.d.ts +8 -0
  258. package/build/utilities/useAppParams.js +72 -0
  259. package/package.json +93 -0
@@ -0,0 +1,450 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
11
+ import { Dropdown } from "antd";
12
+ import { BsThreeDotsVertical } from "react-icons/bs";
13
+ import { IoArchiveOutline, IoDuplicateOutline } from "react-icons/io5";
14
+ import { TbStar, TbStarOff } from "react-icons/tb";
15
+ import { DeleteOutlined, EditOutlined, EyeOutlined, InfoCircleOutlined, UserAddOutlined, } from "@ant-design/icons";
16
+ import { useMemo, useState } from "react";
17
+ import { DriveModes, NotificationStatus, } from "../utilities/constants/interface";
18
+ import { concat, difference, filter, first, get, includes, join, map, } from "lodash";
19
+ import { showNotification } from "../common/notifications";
20
+ import CustomLoader from "../common/loader/CustomLoader";
21
+ import { DownloadOutlined, } from "@ant-design/icons";
22
+ import AddFolder from "./AddFolder";
23
+ import { useMutation, useQueryClient } from "react-query";
24
+ import { archiveFiles, deleteFiles, downloadFiles, duplicateFiles, restoreFiles, unarchiveFiles, useFile, } from "../react-query/services/file-services";
25
+ import { ADDED_TO_FAV_MSG, ARCHIVE_OK_TEXT, ARCHIVE_SUCCESS, CREATE_SUCCESS, DELETE_CONFIRMATION_MESSAGE, DELETE_MESSAGE_DESCRIPTION, DELETE_OK_TEXT, DELETE_SUCCESS, INVALID_URL, REMOVED_FROM_FAV_MSG, RESTORE_SUCCESS, SOMETHING_WENT_WRONG, } from "../utilities/constants/messages";
26
+ import { getSelectedFiles, } from "../react-query/hooks/folder-hooks";
27
+ import { generateFoldersQueryKey, invalidateData, QueryKeys, } from "../utilities/constants/queryKeys";
28
+ import { useRefetchFolders } from "../utilities/FoldersContext";
29
+ import { DeleteConfirmationModal } from "../common/CustomElements";
30
+ import { addToFavFolders, removeFromFavFolders, } from "../react-query/services/folder-services";
31
+ import { MdDriveFileMoveOutline, MdOutlineUnarchive } from "react-icons/md";
32
+ import FileDetails from "./fileDetails/FileDetails";
33
+ import MoveToAnotherFolder from "./files/MoveToAnotherFolder";
34
+ import { AllowedFileActions, BulkRestrictedActions, DEFAULT_PAGE, FileActionsList, MyDriveFileActions, SingleFileRestrictedActions, } from "../hocs/appConstants";
35
+ import InviteTeamModal from "../settings/InviteTeamModal";
36
+ import { FETCH_ENTITY_SCREEN } from "../utilities/constants/routes";
37
+ import ManageFile from "./fileDetails/ManageFile";
38
+ import { useDamConfig } from "../hocs/DamConfigContext";
39
+ import { createApiClient } from "../hocs/configureAxios";
40
+ import useAppParams from "../utilities/useAppParams";
41
+ import { AiOutlineHistory } from "react-icons/ai";
42
+ import FileDownloadHistory from "./FileDownloadHistory";
43
+ const TbStarOffIcon = TbStarOff;
44
+ const IoDuplicateOutlineIcon = IoDuplicateOutline;
45
+ const MdDriveFileMoveOutlineIcon = MdDriveFileMoveOutline;
46
+ const IoArchiveOutlineIcon = IoArchiveOutline;
47
+ const MdOutlineUnarchiveIcon = MdOutlineUnarchive;
48
+ const TbStarIcon = TbStar;
49
+ const BsThreeDotsVerticalIcon = BsThreeDotsVertical;
50
+ const AiOutlineHistoryIcon = AiOutlineHistory;
51
+ function FileMenuOptions({ file, folderIds = [], fileIds = [], folder, onCloseSelection, readOnly = false, fileModal = false, }) {
52
+ const damConfig = useDamConfig();
53
+ const { rootFolderId, appType, isAdmin } = damConfig;
54
+ const { folderId, type } = useAppParams();
55
+ const api = useMemo(() => createApiClient(damConfig), [damConfig]);
56
+ const queryClient = useQueryClient();
57
+ const refetchFolders = useRefetchFolders();
58
+ // Fetch file data from API if file is null but we have a single fileId (no folders)
59
+ const singleFileId = useMemo(() => {
60
+ if (file)
61
+ return ""; // Already have file data, no need to fetch
62
+ if (get(fileIds, "length") === 1 && get(folderIds, "length") === 0) {
63
+ return first(fileIds) || "";
64
+ }
65
+ return "";
66
+ }, [file, fileIds, folderIds]);
67
+ const { data: fetchedFileData } = useFile(api, singleFileId);
68
+ // Use fetched file data if file prop is null
69
+ const effectiveFile = useMemo(() => {
70
+ return file || fetchedFileData || null;
71
+ }, [file, fetchedFileData]);
72
+ const isBulkAction = useMemo(() => !!get(folderIds, "length", 0) || !!get(fileIds, "length", 0), [folderIds, fileIds]);
73
+ const isMultiSelection = useMemo(() => get(folderIds, "length", 0) + get(fileIds, "length", 0) > DEFAULT_PAGE, [folderIds, fileIds]);
74
+ const [state, setState] = useState({
75
+ loading: false,
76
+ displayUpdateName: false,
77
+ actionType: "",
78
+ showConfirmModal: false,
79
+ showPreviewModal: false,
80
+ showMoveFolder: false,
81
+ showShareModal: false,
82
+ showFileAccess: false,
83
+ showLogsModal: false,
84
+ });
85
+ const { loading, displayUpdateName, showConfirmModal, actionType, showPreviewModal, showMoveFolder, showShareModal, showFileAccess, showLogsModal, } = state;
86
+ const toggleLogsModal = () => setState((prevState) => (Object.assign(Object.assign({}, prevState), { showLogsModal: !prevState.showLogsModal })));
87
+ const toggleFileAccess = () => {
88
+ setState((prevState) => (Object.assign(Object.assign({}, prevState), { showFileAccess: !prevState.showFileAccess })));
89
+ };
90
+ const fileLinks = useMemo(() => {
91
+ return map(fileIds, (id) => `${appType == "reactJs"
92
+ ? process.env.REACT_APP_MIXDRIVE_SITE_URL
93
+ : process.env.NEXT_PUBLIC_MIXDRIVE_SITE_URL}` +
94
+ FETCH_ENTITY_SCREEN.replace(":type", DriveModes.FILE).replace(":id", id));
95
+ }, [fileIds]);
96
+ const folderLinks = useMemo(() => {
97
+ return map(folderIds, (id) => `${appType == "reactJs"
98
+ ? process.env.REACT_APP_MIXDRIVE_SITE_URL
99
+ : process.env.NEXT_PUBLIC_MIXDRIVE_SITE_URL}` +
100
+ FETCH_ENTITY_SCREEN.replace(":type", DriveModes.FOLDERS).replace(":id", id));
101
+ }, [folderIds]);
102
+ const link = useMemo(() => {
103
+ if (get(concat(fileLinks, folderLinks), "length")) {
104
+ return get(concat(fileLinks, folderLinks), "length") > 1
105
+ ? join(concat(fileLinks, folderLinks), ", ")
106
+ : first(concat(fileLinks, folderLinks));
107
+ }
108
+ else {
109
+ return (`${appType == "reactJs"
110
+ ? process.env.REACT_APP_MIXDRIVE_SITE_URL
111
+ : process.env.NEXT_PUBLIC_MIXDRIVE_SITE_URL}` +
112
+ FETCH_ENTITY_SCREEN.replace(":type", DriveModes.FILE).replace(":id", get(file, "_id")));
113
+ }
114
+ }, [fileLinks, folderLinks, file]);
115
+ const toggleShareModal = () => {
116
+ setState((prevState) => (Object.assign(Object.assign({}, prevState), { showShareModal: !prevState.showShareModal })));
117
+ };
118
+ const toggleShowPreviewModal = () => {
119
+ setState((prevState) => (Object.assign(Object.assign({}, prevState), { showPreviewModal: !prevState.showPreviewModal })));
120
+ };
121
+ const toggleShowMoveFolder = () => {
122
+ setState((prevState) => (Object.assign(Object.assign({}, prevState), { showMoveFolder: !prevState.showMoveFolder })));
123
+ };
124
+ const toggleConfirmPopup = (actionType = "") => {
125
+ setState((prevState) => (Object.assign(Object.assign({}, prevState), { actionType, showConfirmModal: !prevState.showConfirmModal })));
126
+ };
127
+ const toggleDisplayUpdateName = () => {
128
+ setState((prevState) => (Object.assign(Object.assign({}, prevState), { loading: false, displayUpdateName: !prevState.displayUpdateName })));
129
+ };
130
+ const onFailure = (message) => {
131
+ showNotification(message, NotificationStatus.ERROR);
132
+ };
133
+ const onDeleteSuccess = (message) => __awaiter(this, void 0, void 0, function* () {
134
+ if (refetchFolders) {
135
+ yield refetchFolders();
136
+ }
137
+ else {
138
+ const foldersQueryKey = generateFoldersQueryKey(type);
139
+ const currentFolderId = folderId ? folderId : rootFolderId;
140
+ invalidateData(queryClient, foldersQueryKey, currentFolderId);
141
+ yield queryClient.refetchQueries({
142
+ queryKey: [foldersQueryKey, currentFolderId],
143
+ });
144
+ }
145
+ showNotification(message, NotificationStatus.SUCCESS);
146
+ onCloseSelection === null || onCloseSelection === void 0 ? void 0 : onCloseSelection();
147
+ });
148
+ const deleteFileMutation = useMutation({
149
+ mutationFn: deleteFiles,
150
+ onSuccess: (response) => __awaiter(this, void 0, void 0, function* () {
151
+ toggleConfirmPopup();
152
+ yield onDeleteSuccess(get(response, "data.message", DELETE_SUCCESS));
153
+ }),
154
+ onError: (error) => {
155
+ onFailure(get(error, "message", SOMETHING_WENT_WRONG));
156
+ },
157
+ });
158
+ const onDeleteFile = () => {
159
+ deleteFileMutation.mutate({
160
+ fileIds: [get(file, "_id")],
161
+ folderIds: [],
162
+ api,
163
+ });
164
+ };
165
+ const archiveFileMutation = useMutation({
166
+ mutationFn: archiveFiles,
167
+ onSuccess: (response) => __awaiter(this, void 0, void 0, function* () {
168
+ toggleConfirmPopup();
169
+ yield onDeleteSuccess(get(response, "data.message", ARCHIVE_SUCCESS));
170
+ }),
171
+ onError: (error) => {
172
+ onFailure(get(error, "message", SOMETHING_WENT_WRONG));
173
+ },
174
+ });
175
+ const onArchiveFile = () => {
176
+ archiveFileMutation.mutate({
177
+ fileIds: file ? [get(file, "_id")] : fileIds,
178
+ folderIds,
179
+ api,
180
+ });
181
+ };
182
+ const favouriteFileMutation = useMutation({
183
+ mutationFn: addToFavFolders,
184
+ onSuccess: (response) => {
185
+ onFavSuccess(get(response, "data.message", ADDED_TO_FAV_MSG));
186
+ },
187
+ onError: (error) => {
188
+ onFailure(get(error, "message", SOMETHING_WENT_WRONG));
189
+ },
190
+ });
191
+ const onFavouriteFile = () => {
192
+ favouriteFileMutation.mutate({
193
+ payload: {
194
+ fileIds: file ? [get(file, "_id")] : fileIds,
195
+ folderIds,
196
+ },
197
+ api,
198
+ });
199
+ };
200
+ const duplicateFileMutation = useMutation({
201
+ mutationFn: duplicateFiles,
202
+ onSuccess: (response) => __awaiter(this, void 0, void 0, function* () {
203
+ if (refetchFolders) {
204
+ yield refetchFolders();
205
+ }
206
+ else {
207
+ const foldersQueryKey = generateFoldersQueryKey(type);
208
+ const currentFolderId = folderId ? folderId : rootFolderId;
209
+ invalidateData(queryClient, foldersQueryKey, currentFolderId);
210
+ yield queryClient.refetchQueries({
211
+ queryKey: [foldersQueryKey, currentFolderId],
212
+ });
213
+ }
214
+ onCloseSelection === null || onCloseSelection === void 0 ? void 0 : onCloseSelection();
215
+ showNotification(get(response, "data.message", CREATE_SUCCESS), NotificationStatus.SUCCESS);
216
+ }),
217
+ onError: (error) => {
218
+ onFailure(get(error, "message", SOMETHING_WENT_WRONG));
219
+ },
220
+ });
221
+ const onDuplicateFile = () => {
222
+ const fileToUse = effectiveFile;
223
+ if (!fileToUse || !get(fileToUse, "_id")) {
224
+ onFailure("File not found");
225
+ return;
226
+ }
227
+ duplicateFileMutation.mutate({
228
+ fileIds: [get(fileToUse, "_id")],
229
+ api,
230
+ });
231
+ };
232
+ const downloadFileMutation = useMutation({
233
+ mutationFn: downloadFiles,
234
+ onSuccess: (response) => {
235
+ const url = get(response, "data");
236
+ if (url) {
237
+ window.open(url, "_blank");
238
+ }
239
+ else {
240
+ onFailure(INVALID_URL);
241
+ }
242
+ },
243
+ onError: (error) => {
244
+ onFailure(get(error, "message", SOMETHING_WENT_WRONG));
245
+ },
246
+ });
247
+ const onDownloadFile = () => {
248
+ // Use effectiveFile which includes fetched data from API
249
+ const fileToUse = effectiveFile;
250
+ // Build fileIds list - use file._id if file exists, otherwise use fileIds prop
251
+ const fileIdsList = fileToUse && get(fileToUse, "_id") ? [get(fileToUse, "_id")] : fileIds;
252
+ // Always use API endpoint to ensure download history is tracked
253
+ downloadFileMutation.mutate({
254
+ fileIds: fileIdsList,
255
+ folderIds: folderIds,
256
+ api,
257
+ });
258
+ };
259
+ const onFavSuccess = (message) => {
260
+ invalidateData(queryClient, generateFoldersQueryKey(type), folderId ? folderId : rootFolderId);
261
+ invalidateData(queryClient, QueryKeys.FILE, get(file, "_id"));
262
+ showNotification(message, NotificationStatus.SUCCESS);
263
+ onCloseSelection === null || onCloseSelection === void 0 ? void 0 : onCloseSelection();
264
+ };
265
+ const removeFavFileMutation = useMutation({
266
+ mutationFn: removeFromFavFolders,
267
+ onSuccess: (response) => {
268
+ onFavSuccess(get(response, "data.message", REMOVED_FROM_FAV_MSG));
269
+ },
270
+ onError: (error) => {
271
+ onFailure(get(error, "message", SOMETHING_WENT_WRONG));
272
+ },
273
+ });
274
+ const onUnStarFile = () => {
275
+ removeFavFileMutation.mutate({
276
+ payload: {
277
+ fileIds: file ? [get(file, "_id")] : fileIds,
278
+ folderIds,
279
+ },
280
+ api,
281
+ });
282
+ };
283
+ const restoreFileMutation = useMutation({
284
+ mutationFn: restoreFiles,
285
+ onSuccess: (response) => {
286
+ onDeleteSuccess(get(response, "data.message", RESTORE_SUCCESS));
287
+ },
288
+ onError: (error) => {
289
+ onFailure(get(error, "message", SOMETHING_WENT_WRONG));
290
+ },
291
+ });
292
+ const onRestoreFile = () => {
293
+ restoreFileMutation.mutate({
294
+ fileIds: [get(file, "_id")],
295
+ folderIds: [],
296
+ api,
297
+ });
298
+ };
299
+ const unarchiveFileMutation = useMutation({
300
+ mutationFn: unarchiveFiles,
301
+ onSuccess: (response) => {
302
+ onDeleteSuccess(get(response, "data.message", RESTORE_SUCCESS));
303
+ },
304
+ onError: (error) => {
305
+ onFailure(get(error, "message", SOMETHING_WENT_WRONG));
306
+ },
307
+ });
308
+ const onUnArchiveFile = () => {
309
+ unarchiveFileMutation.mutate({
310
+ fileIds: file ? [get(file, "_id")] : fileIds,
311
+ folderIds: folderIds,
312
+ api,
313
+ });
314
+ };
315
+ const favItems = [
316
+ {
317
+ key: FileActionsList.UNSTAR,
318
+ label: "Unstar",
319
+ icon: removeFavFileMutation.isLoading ? (_jsx(CustomLoader, {})) : (_jsx(TbStarOffIcon, {})),
320
+ onClick: () => onUnStarFile(),
321
+ },
322
+ ];
323
+ const shareItem = isAdmin
324
+ ? [
325
+ {
326
+ key: FileActionsList.SHARE,
327
+ label: "Share",
328
+ icon: _jsx(UserAddOutlined, {}),
329
+ onClick: toggleShareModal,
330
+ },
331
+ ]
332
+ : [];
333
+ const adminItems = isAdmin
334
+ ? [
335
+ {
336
+ key: FileActionsList.RENAME,
337
+ label: "Rename",
338
+ icon: _jsx(EditOutlined, {}),
339
+ onClick: () => toggleDisplayUpdateName(),
340
+ disabled: isMultiSelection || !isAdmin,
341
+ },
342
+ {
343
+ key: FileActionsList.DUPLICATE,
344
+ label: "Duplicate",
345
+ icon: duplicateFileMutation.isLoading ? (_jsx(CustomLoader, {})) : (_jsx(IoDuplicateOutlineIcon, {})),
346
+ onClick: () => onDuplicateFile(),
347
+ disabled: isMultiSelection || !isAdmin,
348
+ },
349
+ {
350
+ key: FileActionsList.DELETE,
351
+ label: "Delete",
352
+ icon: deleteFileMutation.isLoading ? (_jsx(CustomLoader, {})) : (_jsx(DeleteOutlined, {})),
353
+ onClick: () => toggleConfirmPopup("delete"),
354
+ },
355
+ {
356
+ key: FileActionsList.SHOW_DOWNLOADS,
357
+ label: "Download history",
358
+ icon: _jsx(AiOutlineHistoryIcon, {}),
359
+ onClick: toggleLogsModal,
360
+ disabled: isMultiSelection,
361
+ },
362
+ ]
363
+ : [];
364
+ const items = [
365
+ {
366
+ key: FileActionsList.PREVIEW,
367
+ label: "View",
368
+ icon: _jsx(EyeOutlined, {}),
369
+ onClick: () => toggleShowPreviewModal(),
370
+ disabled: !!get(folderIds, "length"),
371
+ },
372
+ // {
373
+ // key: FileActionsList.COPY,
374
+ // label: "Copy",
375
+ // icon: loading ? <CustomLoader /> : <LinkOutlined />,
376
+ // onClick: () => handleCopy(link!),
377
+ // },
378
+ {
379
+ key: FileActionsList.DOWNLOAD,
380
+ label: "Download",
381
+ icon: downloadFileMutation.isLoading ? (_jsx(CustomLoader, {})) : (_jsx(DownloadOutlined, {})),
382
+ onClick: onDownloadFile,
383
+ },
384
+ ...adminItems,
385
+ {
386
+ key: FileActionsList.MOVE,
387
+ label: "Move",
388
+ icon: _jsx(MdDriveFileMoveOutlineIcon, {}),
389
+ onClick: () => toggleShowMoveFolder(),
390
+ disabled: !!get(folderIds, "length"),
391
+ },
392
+ // {
393
+ // key: FileActionsList.ARCHIVE,
394
+ // label: "Archive",
395
+ // icon: <IoArchiveOutlineIcon />,
396
+ // onClick: () => toggleConfirmPopup("archive"),
397
+ // },
398
+ // {
399
+ // key: FileActionsList.UNARCHIVE,
400
+ // label: "Unarchive",
401
+ // icon: unarchiveFileMutation.isLoading ? (
402
+ // <CustomLoader />
403
+ // ) : (
404
+ // <MdOutlineUnarchiveIcon />
405
+ // ),
406
+ // onClick: () => onUnArchiveFile(),
407
+ // },
408
+ // ...(get(file, "isFavourite") || type === DriveModes.STARRED
409
+ // ? favItems
410
+ // : ([
411
+ // {
412
+ // key: FileActionsList.STAR,
413
+ // label: "Add to starred",
414
+ // icon: favouriteFileMutation.isLoading ? (
415
+ // <CustomLoader />
416
+ // ) : (
417
+ // <TbStarIcon />
418
+ // ),
419
+ // onClick: () => onFavouriteFile(),
420
+ // },
421
+ // ] as any)),
422
+ {
423
+ key: FileActionsList.FILE_INFO,
424
+ label: "File information",
425
+ icon: _jsx(InfoCircleOutlined, {}),
426
+ disabled: isMultiSelection,
427
+ onClick: toggleFileAccess,
428
+ },
429
+ // {
430
+ // key: FileActionsList.RESTORE,
431
+ // label: "Restore",
432
+ // icon: restoreFileMutation.isLoading ? <CustomLoader /> : <RedoOutlined />,
433
+ // onClick: () => onRestoreFile(),
434
+ // },
435
+ ];
436
+ const filterActions = (menuItems, allowedActions = MyDriveFileActions) => filter(menuItems, (item) => includes(fileModal
437
+ ? difference(allowedActions, SingleFileRestrictedActions)
438
+ : isBulkAction
439
+ ? difference(allowedActions, BulkRestrictedActions)
440
+ : allowedActions, item === null || item === void 0 ? void 0 : item.key));
441
+ const currentMenuItems = useMemo(() => {
442
+ return filterActions(items, get(AllowedFileActions, type));
443
+ }, [type, items, isBulkAction]);
444
+ return (_jsxs(_Fragment, { children: [_jsx(Dropdown, { menu: { items: currentMenuItems }, trigger: ["click"], disabled: readOnly, children: _jsx(BsThreeDotsVerticalIcon, { size: 20, className: readOnly
445
+ ? "md-lib-cursor-not-allowed md-lib-text-disabledBtnColor dark:md-lib-text-darkBorderColor"
446
+ : "md-lib-cursor-pointer", onClick: (e) => e.stopPropagation() }) }), displayUpdateName && (!!file || !!folder) && (_jsx(AddFolder, { file: file, open: displayUpdateName, handleCancel: toggleDisplayUpdateName, folder: folder, onCloseSelection: onCloseSelection, fileModal: fileModal })), _jsx(DeleteConfirmationModal, { showDeleteModal: showConfirmModal, toggleDeleteModal: toggleConfirmPopup, icon: actionType === "archive" ? (_jsx(IoArchiveOutlineIcon, {})) : (_jsx(DeleteOutlined, {})), okText: actionType === "archive" ? ARCHIVE_OK_TEXT : DELETE_OK_TEXT, description: isMultiSelection
447
+ ? DELETE_CONFIRMATION_MESSAGE.replace(":action", actionType).replace(" :entity", "")
448
+ : DELETE_CONFIRMATION_MESSAGE.replace(":action", actionType).replace(":entity", get(file, "name", "this file")), onOk: actionType === "archive" ? onArchiveFile : onDeleteFile, subHeading: actionType === "archive" ? "" : DELETE_MESSAGE_DESCRIPTION, loading: deleteFileMutation.isLoading || archiveFileMutation.isLoading }), showPreviewModal && (_jsx(FileDetails, { open: showPreviewModal, handleClose: toggleShowPreviewModal, file: file || undefined, files: getSelectedFiles(queryClient, folderId ? folderId : rootFolderId, generateFoldersQueryKey(type), file ? [get(file, "_id")] : fileIds), fileIds: file ? [get(file, "_id")] : fileIds, onCloseSelection: onCloseSelection })), showMoveFolder && (effectiveFile || file) && (_jsx(MoveToAnotherFolder, { open: showMoveFolder, handleCancel: toggleShowMoveFolder, fileIds: effectiveFile ? [get(effectiveFile, "_id")] : [get(file, "_id")], folderIds: [], entity: effectiveFile || file, onCloseSelection: onCloseSelection })), showShareModal && (_jsx(InviteTeamModal, { open: showShareModal, onClose: toggleShareModal, onFetchInvitations: () => { }, shareModal: true, fileIds: file ? [get(file, "_id")] : fileIds, folderIds: folderIds, inviteType: DriveModes.FILE, file: file })), showFileAccess && (file || folder) && (_jsx(ManageFile, { open: showFileAccess, onClose: toggleFileAccess, file: file ? file : folder })), showLogsModal && (_jsx(FileDownloadHistory, { file: file ? file : folder, open: showLogsModal, onClose: toggleLogsModal }))] }));
449
+ }
450
+ export default FileMenuOptions;
@@ -0,0 +1,9 @@
1
+ import { FileEntity } from "../utilities/constants/interface";
2
+ declare const FilesGridView: ({ files, handleClick, selectedFileIds, isImagePicker, selectedPickerFile, }: {
3
+ files: FileEntity[];
4
+ handleClick: (file: FileEntity) => void;
5
+ selectedFileIds: string[];
6
+ isImagePicker?: boolean;
7
+ selectedPickerFile?: FileEntity;
8
+ }) => JSX.Element;
9
+ export default FilesGridView;
@@ -0,0 +1,25 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { DriveModes, ThumbnailStatus, } from "../utilities/constants/interface";
3
+ import _, { get, includes } from "lodash";
4
+ import { getFileOrFolderIcon } from "../common/folders/getFolderOrFileIcon";
5
+ import FileMenuOptions from "./FileMenuOptions";
6
+ import { GrInProgress } from "react-icons/gr";
7
+ import useAppParams from "../utilities/useAppParams";
8
+ import { UPLOAD_FILE_IN_PROGRESS_WHITE_IMAGE } from "../hocs/appConstants";
9
+ import { Image } from "antd";
10
+ const IconInprogress = GrInProgress;
11
+ const FilesGridView = ({ files, handleClick, selectedFileIds, isImagePicker, selectedPickerFile, }) => {
12
+ const { type } = useAppParams();
13
+ return (_jsx("div", { className: "md-lib-grid md-lib-grid-cols-2 md:md-lib-grid-cols-3 xl:md-lib-grid-cols-4 md-lib-gap-x-4 md-lib-gap-y-10 md-lib-relative", children: _.map(files, (file) => {
14
+ const isSelected = includes(selectedFileIds, get(file, "_id")) ||
15
+ get(selectedPickerFile, "_id") === get(file, "_id");
16
+ return (_jsxs("div", { className: `md-lib-rounded-lg md-lib-pt-5 md-lib-h-52 md-lib-cursor-pointer ${isSelected
17
+ ? "md-lib-bg-borderColor dark:md-lib-bg-darkSecondaryBg"
18
+ : "md-lib-bg-textColorActive dark:md-lib-bg-darkPrimary"} `, onClick: () => handleClick(file), children: [_jsxs("div", { className: "md-lib-flex md-lib-px-5 md-lib-items-center md-lib-justify-between md-lib-h-8", children: [_jsxs("div", { className: "md-lib-flex md-lib-items-center md-lib-gap-2 md-lib-w-[calc(100%-20px)]", children: [getFileOrFolderIcon(get(file, "type"), get(file, "mimetype"), 20), _jsx("div", { className: "md-lib-text-textColor dark:md-lib-text-darkTextColor md-lib-text-sm md-lib-font-medium md-lib-truncate md-lib-w-[calc(100%-24px)]", title: get(file, "name", "N/A"), children: get(file, "name", "N/A") })] }), !isImagePicker &&
19
+ type !== DriveModes.FOLDERS &&
20
+ get(file, "fileUploadStatus") !== ThumbnailStatus.PENDING && (_jsx(FileMenuOptions, { file: file }))] }), _jsx("div", { className: "md-lib-mt-2 md-lib-h-28 md-lib-mx-2.5 md-lib-bg-white dark:md-lib-bg-darkPrimaryHoverColor md-lib-rounded-md md-lib-flex md-lib-justify-center", children: get(file, "fileUploadStatus") === ThumbnailStatus.PENDING ? (
21
+ // <IconInprogress className="mt-10 text-[40px] text-imagesColor" />
22
+ _jsx(Image, { src: UPLOAD_FILE_IN_PROGRESS_WHITE_IMAGE, width: 100, height: 100 })) : (_jsx("img", { src: get(file, "thumbnailUrl", ""), width: 100, height: 100, alt: get(file, "name", "N/A") })) }), _jsx("div", { children: _jsx("p", { className: "md-lib-text-xs md-lib-text-textColor dark:md-lib-text-darkTextColor md-lib-px-5 md-lib-pt-2.5 md-lib-truncate md-lib-max-w-40", title: get(file, "name", "N/A"), children: get(file, "assetName", "N/A") }) })] }, get(file, "_id")));
23
+ }) }));
24
+ };
25
+ export default FilesGridView;
@@ -0,0 +1,20 @@
1
+ import { FileEntity, FolderEntity, SortByKeys, SortOrders } from "../utilities/constants/interface";
2
+ declare const FolderGridView: ({ folders, foldersFetching, hasNextPage, fetchNextPage, files, selectedFileIds, selectedFolderIds, setSelectedItems, isImagePicker, setSelectedFile, setParentFolderId, selectedPickerFile, sortBy, sortOrder, setSortOrders, setSelectedKeys, }: {
3
+ folders: FolderEntity[];
4
+ foldersFetching: boolean;
5
+ hasNextPage: boolean;
6
+ fetchNextPage: () => void;
7
+ files: FileEntity[];
8
+ selectedFolderIds: string[];
9
+ selectedFileIds: string[];
10
+ setSelectedItems: (values: any) => void;
11
+ setSelectedFile?: (value: FileEntity) => void;
12
+ isImagePicker?: boolean;
13
+ setParentFolderId?: (value: string) => void;
14
+ selectedPickerFile?: FileEntity;
15
+ sortBy: SortByKeys;
16
+ sortOrder: SortOrders;
17
+ setSortOrders: (newSortBy: SortByKeys, newSortOrder: SortOrders) => void;
18
+ setSelectedKeys?: (keys: string | string[]) => void;
19
+ }) => JSX.Element;
20
+ export default FolderGridView;
@@ -0,0 +1,95 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { DriveModes, EntityType, } from "../utilities/constants/interface";
3
+ import _, { filter, get, includes } from "lodash";
4
+ import { FaFolder } from "react-icons/fa";
5
+ import LoadMoreItems from "../common/LoadMoreItems";
6
+ import FolderMenuOptions from "./FolderMenuOptions";
7
+ import { FETCH_ENTITY_SCREEN, } from "../utilities/constants/routes";
8
+ import FilesGridView from "./FilesGridView";
9
+ import { useRef, useState } from "react";
10
+ import ActionsBar from "./ActionBar";
11
+ import FileDetails from "./fileDetails/FileDetails";
12
+ import useAppNavigate from "../utilities/useAppNavigate";
13
+ import useAppParams from "../utilities/useAppParams";
14
+ const FaFolderIcon = FaFolder;
15
+ const FolderGridView = ({ folders, foldersFetching, hasNextPage, fetchNextPage, files, selectedFileIds, selectedFolderIds, setSelectedItems, isImagePicker, setSelectedFile, setParentFolderId, selectedPickerFile, sortBy, sortOrder, setSortOrders, setSelectedKeys, }) => {
16
+ const navigate = useAppNavigate();
17
+ const [state, setState] = useState({
18
+ selectedFile: {},
19
+ showPreviewModal: false,
20
+ });
21
+ const { showPreviewModal, selectedFile } = state;
22
+ const { type } = useAppParams();
23
+ const clickTimer = useRef(null);
24
+ const lastClickedId = useRef(null);
25
+ const handleClick = (folder) => {
26
+ const id = get(folder, "_id");
27
+ const fileType = get(folder, "type", EntityType.FOLDER);
28
+ if (isImagePicker) {
29
+ if (fileType === EntityType.FILE) {
30
+ setSelectedFile === null || setSelectedFile === void 0 ? void 0 : setSelectedFile(folder);
31
+ }
32
+ else {
33
+ setParentFolderId === null || setParentFolderId === void 0 ? void 0 : setParentFolderId(id);
34
+ }
35
+ }
36
+ else if (type === DriveModes.FOLDERS) {
37
+ if (navigate) {
38
+ navigate(FETCH_ENTITY_SCREEN.replace(":id", id).replace(":type", fileType));
39
+ }
40
+ }
41
+ else {
42
+ const isDoubleClick = clickTimer.current !== null && lastClickedId.current === id;
43
+ if (isDoubleClick) {
44
+ if (clickTimer.current) {
45
+ clearTimeout(clickTimer.current);
46
+ }
47
+ clickTimer.current = null;
48
+ lastClickedId.current = null;
49
+ if (fileType === EntityType.FOLDER) {
50
+ if (setSelectedKeys) {
51
+ setSelectedKeys(id);
52
+ }
53
+ }
54
+ else if (fileType === EntityType.FILE && type !== DriveModes.TRASH) {
55
+ setState((prevState) => (Object.assign(Object.assign({}, prevState), { selectedFile: folder, showPreviewModal: true })));
56
+ }
57
+ return;
58
+ }
59
+ if (clickTimer.current) {
60
+ clearTimeout(clickTimer.current);
61
+ }
62
+ lastClickedId.current = id;
63
+ clickTimer.current = setTimeout(() => {
64
+ if (fileType === EntityType.FILE) {
65
+ const alreadySelected = includes(selectedFileIds, id);
66
+ setSelectedItems({
67
+ fileIds: alreadySelected
68
+ ? filter(selectedFileIds, (fid) => fid !== id)
69
+ : [...selectedFileIds, id],
70
+ });
71
+ }
72
+ else {
73
+ const alreadySelected = includes(selectedFolderIds, id);
74
+ setSelectedItems({
75
+ folderIds: alreadySelected
76
+ ? filter(selectedFolderIds, (fid) => fid !== id)
77
+ : [...selectedFolderIds, id],
78
+ });
79
+ }
80
+ clickTimer.current = null;
81
+ lastClickedId.current = null;
82
+ }, 250);
83
+ }
84
+ };
85
+ return (_jsxs("div", { className: "md-lib-flex md-lib-flex-col md-lib-gap-y-10", children: [_jsx("div", { className: "md-lib-grid md-lib-grid-cols-2 md:md-lib-grid-cols-3 xl:md-lib-grid-cols-4 2xl:md-lib-grid-cols-5 md-lib-gap-x-4 md-lib-gap-y-10", children: _.map(folders, (folder) => {
86
+ const isSelected = includes(selectedFolderIds, get(folder, "_id")) ||
87
+ get(selectedPickerFile, "_id") === get(folder, "_id");
88
+ return (_jsxs("div", { className: `md-lib-border md-lib-border-borderColor dark:md-lib-border-darkBorderColor md-lib-rounded-lg md-lib-px-5 md-lib-h-16 md-lib-flex md-lib-items-center md-lib-justify-between md-lib-cursor-pointer ${isSelected ? "md-lib-bg-borderColor dark:md-lib-bg-darkSecondaryBg" : ""}`, onClick: () => handleClick(folder), children: [_jsxs("div", { className: "md-lib-flex md-lib-items-center md-lib-gap-2 md-lib-w-[calc(100%-20px)]", children: [_jsxs("div", { children: [" ", _jsx(FaFolderIcon, { className: "md-lib-text-primaryColor", size: 32 })] }), _jsx("p", { className: "md-lib-text-textColor dark:md-lib-text-darkTextColor md-lib-truncate", title: get(folder, "name", "N/A"), children: get(folder, "name") })] }), !isImagePicker && type !== DriveModes.FOLDERS && (_jsx("div", { onClick: (e) => e.stopPropagation(), children: _jsx(FolderMenuOptions, { folder: folder }) }))] }, get(folder, "_id")));
89
+ }) }), _jsx(FilesGridView, { files: files, handleClick: handleClick, selectedFileIds: selectedFileIds, isImagePicker: isImagePicker, selectedPickerFile: selectedPickerFile }), _jsx(LoadMoreItems, { hasNextPage: hasNextPage, isItemsFetching: foldersFetching, fetchNextPage: fetchNextPage }), (!!get(selectedFileIds, "length") ||
90
+ !!get(selectedFolderIds, "length")) && (_jsx(ActionsBar, { fileIds: selectedFileIds, folderIds: selectedFolderIds, onCloseSelection: () => setSelectedItems({ fileIds: [], folderIds: [] }), selectedFilesData: filter([...folders, ...files], (item) => includes(selectedFileIds, get(item, "_id")) ||
91
+ includes(selectedFolderIds, get(item, "_id"))) })), showPreviewModal && (_jsx(FileDetails, { open: showPreviewModal, handleClose: () => {
92
+ setState((prevState) => (Object.assign(Object.assign({}, prevState), { showPreviewModal: false, selectedFile: {} })));
93
+ }, file: selectedFile }))] }));
94
+ };
95
+ export default FolderGridView;
@@ -0,0 +1,26 @@
1
+ import { AssetTemplateEntity, FileEntity, FolderEntity, SortByKeys, SortOrders } from "../utilities/constants/interface";
2
+ declare const FolderListView: ({ folders, foldersFetching, hasNextPage, fetchNextPage, selectedFileIds, selectedFolderIds, setSelectedItems, isImagePicker, setSelectedFile, setParentFolderId, selectedPickerFile, location, assets, sortByKey, sortOrder, setSortOrders, onSearch, searchKey, searchValue, metadataKey, metadataValue, setSelectedKeys, }: {
3
+ folders: FolderEntity[] | FileEntity[];
4
+ foldersFetching: boolean;
5
+ hasNextPage: boolean;
6
+ fetchNextPage: () => void;
7
+ selectedFolderIds: string[];
8
+ selectedFileIds: string[];
9
+ setSelectedItems: (values: any) => void;
10
+ setSelectedFile?: (value: FileEntity) => void;
11
+ isImagePicker?: boolean;
12
+ setParentFolderId?: (value: string) => void;
13
+ selectedPickerFile?: FileEntity;
14
+ location: string;
15
+ assets: AssetTemplateEntity[];
16
+ sortByKey: SortByKeys;
17
+ sortOrder: SortOrders;
18
+ setSortOrders: (newSortBy: SortByKeys, newSortOrder: SortOrders) => void;
19
+ onSearch: (filters: Record<string, any>) => void;
20
+ searchKey: string;
21
+ searchValue: string;
22
+ metadataKey: string;
23
+ metadataValue: string;
24
+ setSelectedKeys?: (keys: string | string[]) => void;
25
+ }) => JSX.Element;
26
+ export default FolderListView;