@chayns-components/gallery 5.0.0-beta.142 → 5.0.0-beta.152

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.
@@ -1,5 +1,5 @@
1
1
  export interface PostVideoResult {
2
- id: number;
2
+ id: string;
3
3
  originalVideoQuality: string;
4
4
  thumbnailUrl: string;
5
5
  url: string;
@@ -12,5 +12,5 @@ interface PostVideoOptions {
12
12
  /**
13
13
  * Uploads a video to the streaming service
14
14
  */
15
- export declare const postVideo: ({ accessToken, file, }: PostVideoOptions) => Promise<PostVideoResult>;
15
+ export declare const postVideo: ({ accessToken, file, }: PostVideoOptions) => Promise<PostVideoResult | undefined>;
16
16
  export {};
@@ -22,7 +22,8 @@ const postVideo = async _ref => {
22
22
  method: 'POST'
23
23
  });
24
24
  if (response.ok) {
25
- return await response.json();
25
+ const data = await response.json();
26
+ return data[0];
26
27
  }
27
28
  throw Error(`Failed to POST video (status code: ${response.status}).`);
28
29
  };
@@ -1 +1 @@
1
- {"version":3,"file":"post.js","names":["postVideo","_ref","accessToken","file","formData","FormData","append","response","fetch","body","headers","Authorization","method","ok","json","Error","status","exports"],"sources":["../../../src/api/video/post.ts"],"sourcesContent":["export interface PostVideoResult {\n id: number;\n originalVideoQuality: string;\n thumbnailUrl: string;\n url: string;\n urlMP4: string;\n}\n\ninterface PostVideoOptions {\n accessToken: string;\n file: File | Blob;\n}\n\n/**\n * Uploads a video to the streaming service\n */\nexport const postVideo = async ({\n accessToken,\n file,\n}: PostVideoOptions): Promise<PostVideoResult> => {\n const formData = new FormData();\n\n formData.append('files', file);\n const response = await fetch(\n 'https://streamingservice.chayns.space/video?disableIntercom=true',\n {\n body: formData,\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n method: 'POST',\n }\n );\n\n if (response.ok) {\n return (await response.json()) as PostVideoResult;\n }\n\n throw Error(`Failed to POST video (status code: ${response.status}).`);\n};\n"],"mappings":";;;;;;AAaA;AACA;AACA;AACO,MAAMA,SAAS,GAAG,MAAAC,IAAA,IAGyB;EAAA,IAHlB;IAC5BC,WAAW;IACXC;EACc,CAAC,GAAAF,IAAA;EACf,MAAMG,QAAQ,GAAG,IAAIC,QAAQ,CAAC,CAAC;EAE/BD,QAAQ,CAACE,MAAM,CAAC,OAAO,EAAEH,IAAI,CAAC;EAC9B,MAAMI,QAAQ,GAAG,MAAMC,KAAK,CACxB,kEAAkE,EAClE;IACIC,IAAI,EAAEL,QAAQ;IACdM,OAAO,EAAE;MACLC,aAAa,EAAG,UAAST,WAAY;IACzC,CAAC;IACDU,MAAM,EAAE;EACZ,CACJ,CAAC;EAED,IAAIL,QAAQ,CAACM,EAAE,EAAE;IACb,OAAQ,MAAMN,QAAQ,CAACO,IAAI,CAAC,CAAC;EACjC;EAEA,MAAMC,KAAK,CAAE,sCAAqCR,QAAQ,CAACS,MAAO,IAAG,CAAC;AAC1E,CAAC;AAACC,OAAA,CAAAjB,SAAA,GAAAA,SAAA"}
1
+ {"version":3,"file":"post.js","names":["postVideo","_ref","accessToken","file","formData","FormData","append","response","fetch","body","headers","Authorization","method","ok","data","json","Error","status","exports"],"sources":["../../../src/api/video/post.ts"],"sourcesContent":["export interface PostVideoResult {\n id: string;\n originalVideoQuality: string;\n thumbnailUrl: string;\n url: string;\n urlMP4: string;\n}\n\ninterface PostVideoOptions {\n accessToken: string;\n file: File | Blob;\n}\n\n/**\n * Uploads a video to the streaming service\n */\nexport const postVideo = async ({\n accessToken,\n file,\n}: PostVideoOptions): Promise<PostVideoResult | undefined> => {\n const formData = new FormData();\n\n formData.append('files', file);\n\n const response = await fetch(\n 'https://streamingservice.chayns.space/video?disableIntercom=true',\n {\n body: formData,\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n method: 'POST',\n }\n );\n\n if (response.ok) {\n const data = (await response.json()) as PostVideoResult[];\n\n return data[0];\n }\n\n throw Error(`Failed to POST video (status code: ${response.status}).`);\n};\n"],"mappings":";;;;;;AAaA;AACA;AACA;AACO,MAAMA,SAAS,GAAG,MAAAC,IAAA,IAGqC;EAAA,IAH9B;IAC5BC,WAAW;IACXC;EACc,CAAC,GAAAF,IAAA;EACf,MAAMG,QAAQ,GAAG,IAAIC,QAAQ,CAAC,CAAC;EAE/BD,QAAQ,CAACE,MAAM,CAAC,OAAO,EAAEH,IAAI,CAAC;EAE9B,MAAMI,QAAQ,GAAG,MAAMC,KAAK,CACxB,kEAAkE,EAClE;IACIC,IAAI,EAAEL,QAAQ;IACdM,OAAO,EAAE;MACLC,aAAa,EAAG,UAAST,WAAY;IACzC,CAAC;IACDU,MAAM,EAAE;EACZ,CACJ,CAAC;EAED,IAAIL,QAAQ,CAACM,EAAE,EAAE;IACb,MAAMC,IAAI,GAAI,MAAMP,QAAQ,CAACQ,IAAI,CAAC,CAAuB;IAEzD,OAAOD,IAAI,CAAC,CAAC,CAAC;EAClB;EAEA,MAAME,KAAK,CAAE,sCAAqCT,QAAQ,CAACU,MAAO,IAAG,CAAC;AAC1E,CAAC;AAACC,OAAA,CAAAlB,SAAA,GAAAA,SAAA"}
@@ -1,5 +1,5 @@
1
1
  import { FC } from 'react';
2
- import type { ExternalFile, UploadedFile } from '../types/file';
2
+ import type { FileItem } from '../types/file';
3
3
  export type GalleryProps = {
4
4
  /**
5
5
  * AccessToken of the user
@@ -16,15 +16,15 @@ export type GalleryProps = {
16
16
  /**
17
17
  * Images and videos which should be displayed
18
18
  */
19
- files?: ExternalFile[];
19
+ files?: FileItem[];
20
20
  /**
21
21
  * Function to be executed when files are added
22
22
  */
23
- onAdd?: (files: UploadedFile[]) => void;
23
+ onAdd?: (files: FileItem[]) => void;
24
24
  /**
25
25
  * Function to be executed when a file is removed
26
26
  */
27
- onRemove?: (file: UploadedFile) => void;
27
+ onRemove?: (file: FileItem) => void;
28
28
  /**
29
29
  * PersonId of the user
30
30
  */
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
+ var _uuid = require("uuid");
8
9
  var _file = require("../utils/file");
9
10
  var _upload = require("../utils/upload");
10
11
  var _AddFile = _interopRequireDefault(require("./add-file/AddFile"));
@@ -23,139 +24,212 @@ const Gallery = _ref => {
23
24
  onRemove,
24
25
  personId
25
26
  } = _ref;
26
- const [uploadedFiles, setUploadedFiles] = (0, _react.useState)([]);
27
- const [externalFiles, setExternalFiles] = (0, _react.useState)([]);
28
- const combinedFiles = (0, _react.useMemo)(() => [...externalFiles, ...uploadedFiles], [externalFiles, uploadedFiles]);
27
+ const [fileItems, setFileItems] = (0, _react.useState)([]);
29
28
 
30
29
  /**
31
- * Merge external files with uploaded files
30
+ * This function adds a previewUrl to fileItems
32
31
  */
33
- (0, _react.useEffect)(() => {
34
- if (!files || !Array.isArray(files)) {
35
- return;
36
- }
37
- const newExternalFiles = files.map(file => {
38
- if ('thumbnailUrl' in file) {
32
+ const handlePreviewUrlCallback = (previewUrl, file) => {
33
+ setFileItems(prevState => prevState.map(prevFile => {
34
+ if (prevFile.id === file.id) {
35
+ return {
36
+ ...prevFile,
37
+ previewUrl
38
+ };
39
+ }
40
+ return prevFile;
41
+ }));
42
+ };
43
+
44
+ /**
45
+ * This function adds uploaded files to fileItems
46
+ */
47
+ const handleUploadFileCallback = (file, UploadedFile) => {
48
+ setFileItems(prevState => prevState.map(prevFile => {
49
+ if (prevFile.id === file.id) {
39
50
  return {
40
- id: file.id,
41
- url: file.url,
42
- thumbnailUrl: file.url
51
+ ...prevFile,
52
+ uploadedFile: UploadedFile,
53
+ id: UploadedFile.id,
54
+ state: 'uploaded'
43
55
  };
44
56
  }
45
- return {
46
- id: file.id,
47
- url: file.url
48
- };
57
+ return prevFile;
58
+ }));
59
+ };
60
+
61
+ /**
62
+ * This function returns the fileItems if some files are updated
63
+ */
64
+ (0, _react.useEffect)(() => {
65
+ if (onAdd) {
66
+ onAdd(fileItems);
67
+ }
68
+ }, [fileItems, onAdd]);
69
+
70
+ /**
71
+ * Prepares files for previewUrl and upload
72
+ */
73
+ (0, _react.useEffect)(() => {
74
+ const filesToGeneratePreview = fileItems.filter(file => file.file && !file.previewUrl && (file.state === 'none' || !file.state));
75
+ const filesToUpload = fileItems.filter(file => !file.uploadedFile && file.state !== 'uploading');
76
+ filesToGeneratePreview.forEach(file => {
77
+ if (!file.file) {
78
+ return;
79
+ }
80
+ (0, _file.generatePreviewUrl)({
81
+ file: file.file,
82
+ callback: previewUrl => handlePreviewUrlCallback(previewUrl, file)
83
+ });
84
+ });
85
+ filesToUpload.forEach(file => {
86
+ setFileItems(prevState => prevState.map(prevFile => {
87
+ if (prevFile.id === file.id) {
88
+ return {
89
+ ...prevFile,
90
+ state: 'uploading'
91
+ };
92
+ }
93
+ return prevFile;
94
+ }));
95
+ void (0, _upload.uploadFile)({
96
+ fileToUpload: file,
97
+ personId,
98
+ accessToken,
99
+ callback: UploadedFile => handleUploadFileCallback(file, UploadedFile)
100
+ });
101
+ });
102
+ }, [accessToken, fileItems, personId]);
103
+
104
+ /**
105
+ * This function formats and adds files to fileItems
106
+ */
107
+ const handleAddFiles = (0, _react.useCallback)(filesToAdd => {
108
+ const newFileItems = [];
109
+ filesToAdd.forEach(file => {
110
+ if (file && !(0, _file.filterDuplicateFile)({
111
+ files: fileItems,
112
+ newFile: file
113
+ })) {
114
+ newFileItems.push({
115
+ id: (0, _uuid.v4)(),
116
+ file,
117
+ state: 'none'
118
+ });
119
+ }
49
120
  });
50
- setExternalFiles(newExternalFiles);
121
+ setFileItems(prevState => [...prevState, ...newFileItems]);
122
+ }, [fileItems]);
123
+
124
+ /**
125
+ * This function adds external files to fileItems
126
+ */
127
+ (0, _react.useEffect)(() => {
128
+ if (files) {
129
+ const newFileItems = [];
130
+ files.forEach(file => {
131
+ newFileItems.push({
132
+ id: (0, _uuid.v4)(),
133
+ uploadedFile: file.uploadedFile,
134
+ file: file.file,
135
+ state: file.uploadedFile ? 'uploaded' : 'none'
136
+ });
137
+ });
138
+ setFileItems(prevState => [...prevState, ...newFileItems]);
139
+ }
51
140
  }, [files]);
52
141
 
53
142
  /**
54
143
  * This function deletes a selected file from the file list
55
144
  */
56
- const handleDeleteFile = (0, _react.useCallback)(url => {
145
+ const handleDeleteFile = (0, _react.useCallback)(id => {
57
146
  let fileToDelete;
58
- const externalFileToDelete = externalFiles.find(file => file.url === url);
59
- if (externalFileToDelete && typeof onRemove === 'function') {
60
- onRemove(externalFileToDelete);
61
- return;
62
- }
63
- const filteredFiles = uploadedFiles.filter(file => {
64
- const fileUrl = file.url;
65
- if (fileUrl === url) {
147
+ const filteredFiles = fileItems.filter(file => {
148
+ const fileId = file.id;
149
+ if (fileId === id) {
66
150
  fileToDelete = file;
67
151
  }
68
- return fileUrl !== url;
152
+ return fileId !== id;
69
153
  });
70
- setUploadedFiles(filteredFiles);
154
+ setFileItems(filteredFiles);
71
155
  if (!fileToDelete || !onRemove) {
72
156
  return;
73
157
  }
74
158
  onRemove(fileToDelete);
75
- }, [externalFiles, onRemove, uploadedFiles]);
159
+ }, [fileItems, onRemove]);
76
160
 
77
161
  /**
78
162
  * This function handles the drag and drop
79
163
  */
80
- const handleDrop = (0, _react.useCallback)(async e => {
164
+ const handleDrop = (0, _react.useCallback)(e => {
81
165
  if (!allowDragAndDrop) {
82
166
  return;
83
167
  }
84
168
  e.preventDefault();
85
169
  const draggedFiles = Array.from(e.dataTransfer.files);
86
- const updatedFiles = await (0, _upload.uploadFiles)({
87
- accessToken,
88
- filesToUpload: draggedFiles,
89
- personId
90
- });
91
- const {
92
- newUniqueFiles
93
- } = (0, _file.filterDuplicateFiles)({
94
- oldFiles: uploadedFiles,
95
- newFiles: updatedFiles
96
- });
97
- setUploadedFiles(prevState => [...prevState, ...newUniqueFiles]);
98
- if (!onAdd) {
99
- return;
100
- }
101
- onAdd(newUniqueFiles);
102
- }, [accessToken, allowDragAndDrop, onAdd, personId, uploadedFiles]);
170
+ handleAddFiles(draggedFiles);
171
+ }, [allowDragAndDrop, handleAddFiles]);
103
172
 
104
173
  /**
105
174
  * Returns the ratio of the single file
106
175
  */
107
176
  const ratio = (0, _react.useMemo)(() => {
108
- var _combinedFiles$0$rati, _combinedFiles$;
109
- return (
110
- // If the length is 1, the ratio or at least 1 is returned
111
- combinedFiles.length === 1 ? Math.max((_combinedFiles$0$rati = (_combinedFiles$ = combinedFiles[0]) === null || _combinedFiles$ === void 0 ? void 0 : _combinedFiles$.ratio) !== null && _combinedFiles$0$rati !== void 0 ? _combinedFiles$0$rati : 1, 1) : 1
112
- );
113
- }, [combinedFiles]);
177
+ var _fileItems$0$uploaded, _fileItems$, _fileItems$$uploadedF;
178
+ switch (fileItems.length) {
179
+ case 0:
180
+ return 0;
181
+ case 1:
182
+ return Math.max((_fileItems$0$uploaded = (_fileItems$ = fileItems[0]) === null || _fileItems$ === void 0 ? void 0 : (_fileItems$$uploadedF = _fileItems$.uploadedFile) === null || _fileItems$$uploadedF === void 0 ? void 0 : _fileItems$$uploadedF.ratio) !== null && _fileItems$0$uploaded !== void 0 ? _fileItems$0$uploaded : 1, 1);
183
+ case 2:
184
+ return 2;
185
+ case 3:
186
+ return 3;
187
+ default:
188
+ return 1;
189
+ }
190
+ // // If the length is 1, the ratio or at least 1 is returned
191
+ // fileItems.length === 1 ? Math.max(fileItems[0]?.uploadedFile?.ratio ?? 1, 1) : 1,
192
+ }, [fileItems]);
114
193
 
115
194
  /**
116
195
  * Returns the number of columns
117
196
  */
118
197
  const columns = (0, _react.useMemo)(() => {
119
- const combinedFilesLength = combinedFiles.length;
198
+ const combinedFilesLength = fileItems.length;
120
199
  if (combinedFilesLength <= 1) {
121
200
  return '';
122
201
  }
123
202
  return `repeat(${combinedFilesLength === 3 ? 3 : 2}, 1fr)`;
124
- }, [combinedFiles]);
203
+ }, [fileItems.length]);
125
204
  const galleryContent = (0, _react.useMemo)(() => {
126
- const combinedFilesLength = combinedFiles.length;
205
+ const combinedFilesLength = fileItems.length;
127
206
  if (isEditMode) {
128
- const items = combinedFiles.map(file => /*#__PURE__*/_react.default.createElement(_GalleryItem.default, {
129
- uploadedFile: file,
207
+ const items = fileItems.map(file => /*#__PURE__*/_react.default.createElement(_GalleryItem.default, {
208
+ fileItem: file,
130
209
  isEditMode: true,
131
- ratio: ratio,
132
210
  handleDeleteFile: handleDeleteFile
133
211
  }));
134
212
  items.push( /*#__PURE__*/_react.default.createElement(_AddFile.default, {
135
- setUploadedFiles: setUploadedFiles,
136
- uploadedFiles: uploadedFiles,
137
- onAdd: onAdd,
138
- personId: personId,
139
- accessToken: accessToken
213
+ onAdd: handleAddFiles
140
214
  }));
141
215
  return items;
142
216
  }
143
- const shortedFiles = combinedFiles.slice(0, 4);
217
+ const shortedFiles = fileItems.slice(0, 4);
144
218
  return shortedFiles.map((file, index) => /*#__PURE__*/_react.default.createElement(_GalleryItem.default, {
145
- uploadedFile: file,
219
+ fileItem: file,
146
220
  isEditMode: false,
147
- ratio: ratio,
148
221
  handleDeleteFile: handleDeleteFile,
149
222
  remainingItemsLength: combinedFilesLength > 4 && index === 3 ? combinedFilesLength : undefined
150
223
  }));
151
- }, [combinedFiles, isEditMode, uploadedFiles, onAdd, personId, accessToken, ratio, handleDeleteFile]);
224
+ }, [fileItems, isEditMode, handleAddFiles, handleDeleteFile]);
152
225
  return (0, _react.useMemo)(() => /*#__PURE__*/_react.default.createElement(_Gallery.StyledGallery, null, isEditMode ? /*#__PURE__*/_react.default.createElement(_Gallery.StyledGalleryEditModeWrapper, {
153
226
  onDragOver: e => e.preventDefault(),
154
227
  onDrop: e => void handleDrop(e)
155
228
  }, galleryContent) : /*#__PURE__*/_react.default.createElement(_Gallery.StyledGalleryItemWrapper, {
229
+ ratio: ratio,
156
230
  columns: columns,
157
- uploadedFileLength: combinedFiles.length
158
- }, galleryContent)), [isEditMode, galleryContent, columns, combinedFiles.length, handleDrop]);
231
+ uploadedFileLength: fileItems.length
232
+ }, galleryContent)), [isEditMode, galleryContent, ratio, columns, fileItems.length, handleDrop]);
159
233
  };
160
234
  Gallery.displayName = 'Gallery';
161
235
  var _default = Gallery;
@@ -1 +1 @@
1
- {"version":3,"file":"Gallery.js","names":["_react","_interopRequireWildcard","require","_file","_upload","_AddFile","_interopRequireDefault","_GalleryItem","_Gallery","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","Gallery","_ref","accessToken","allowDragAndDrop","isEditMode","files","onAdd","onRemove","personId","uploadedFiles","setUploadedFiles","useState","externalFiles","setExternalFiles","combinedFiles","useMemo","useEffect","Array","isArray","newExternalFiles","map","file","id","url","thumbnailUrl","handleDeleteFile","useCallback","fileToDelete","externalFileToDelete","find","filteredFiles","filter","fileUrl","handleDrop","e","preventDefault","draggedFiles","from","dataTransfer","updatedFiles","uploadFiles","filesToUpload","newUniqueFiles","filterDuplicateFiles","oldFiles","newFiles","prevState","ratio","_combinedFiles$0$rati","_combinedFiles$","length","Math","max","columns","combinedFilesLength","galleryContent","items","createElement","uploadedFile","push","shortedFiles","slice","index","remainingItemsLength","undefined","StyledGallery","StyledGalleryEditModeWrapper","onDragOver","onDrop","StyledGalleryItemWrapper","uploadedFileLength","displayName","_default","exports"],"sources":["../../src/components/Gallery.tsx"],"sourcesContent":["import React, { DragEvent, FC, useCallback, useEffect, useMemo, useState } from 'react';\nimport type { ExternalFile, UploadedFile } from '../types/file';\nimport { filterDuplicateFiles } from '../utils/file';\nimport { uploadFiles } from '../utils/upload';\nimport AddFile from './add-file/AddFile';\nimport GalleryItem from './gallery-item/GalleryItem';\nimport {\n StyledGallery,\n StyledGalleryEditModeWrapper,\n StyledGalleryItemWrapper,\n} from './Gallery.styles';\n\nexport type GalleryProps = {\n /**\n * AccessToken of the user\n */\n accessToken: string;\n /**\n * Whether drag and drop is allowed or not\n */\n allowDragAndDrop?: boolean;\n /**\n * Whether images and videos can be edited\n */\n isEditMode?: boolean;\n /**\n * Images and videos which should be displayed\n */\n files?: ExternalFile[];\n /**\n * Function to be executed when files are added\n */\n onAdd?: (files: UploadedFile[]) => void;\n /**\n * Function to be executed when a file is removed\n */\n onRemove?: (file: UploadedFile) => void;\n /**\n * PersonId of the user\n */\n personId: string;\n};\n\nconst Gallery: FC<GalleryProps> = ({\n accessToken,\n allowDragAndDrop = false,\n isEditMode = false,\n files,\n onAdd,\n onRemove,\n personId,\n}) => {\n const [uploadedFiles, setUploadedFiles] = useState<UploadedFile[]>([]);\n const [externalFiles, setExternalFiles] = useState<UploadedFile[]>([]);\n\n const combinedFiles = useMemo(\n () => [...externalFiles, ...uploadedFiles],\n [externalFiles, uploadedFiles]\n );\n\n /**\n * Merge external files with uploaded files\n */\n useEffect(() => {\n if (!files || !Array.isArray(files)) {\n return;\n }\n\n const newExternalFiles: UploadedFile[] = files.map((file) => {\n if ('thumbnailUrl' in file) {\n return {\n id: file.id,\n url: file.url,\n thumbnailUrl: file.url,\n };\n }\n\n return {\n id: file.id,\n url: file.url,\n };\n });\n\n setExternalFiles(newExternalFiles);\n }, [files]);\n\n /**\n * This function deletes a selected file from the file list\n */\n const handleDeleteFile = useCallback(\n (url: string) => {\n let fileToDelete: UploadedFile | undefined;\n\n const externalFileToDelete = externalFiles.find((file) => file.url === url);\n\n if (externalFileToDelete && typeof onRemove === 'function') {\n onRemove(externalFileToDelete);\n\n return;\n }\n\n const filteredFiles = uploadedFiles.filter((file) => {\n const fileUrl = file.url;\n\n if (fileUrl === url) {\n fileToDelete = file;\n }\n\n return fileUrl !== url;\n });\n\n setUploadedFiles(filteredFiles);\n\n if (!fileToDelete || !onRemove) {\n return;\n }\n\n onRemove(fileToDelete);\n },\n [externalFiles, onRemove, uploadedFiles]\n );\n\n /**\n * This function handles the drag and drop\n */\n const handleDrop = useCallback(\n async (e: DragEvent<HTMLDivElement>) => {\n if (!allowDragAndDrop) {\n return;\n }\n\n e.preventDefault();\n const draggedFiles = Array.from(e.dataTransfer.files);\n\n const updatedFiles = await uploadFiles({\n accessToken,\n filesToUpload: draggedFiles,\n personId,\n });\n\n const { newUniqueFiles } = filterDuplicateFiles({\n oldFiles: uploadedFiles,\n newFiles: updatedFiles,\n });\n\n setUploadedFiles((prevState) => [...prevState, ...newUniqueFiles]);\n\n if (!onAdd) {\n return;\n }\n\n onAdd(newUniqueFiles);\n },\n [accessToken, allowDragAndDrop, onAdd, personId, uploadedFiles]\n );\n\n /**\n * Returns the ratio of the single file\n */\n const ratio = useMemo(\n () =>\n // If the length is 1, the ratio or at least 1 is returned\n combinedFiles.length === 1 ? Math.max(combinedFiles[0]?.ratio ?? 1, 1) : 1,\n [combinedFiles]\n );\n\n /**\n * Returns the number of columns\n */\n const columns = useMemo(() => {\n const combinedFilesLength = combinedFiles.length;\n\n if (combinedFilesLength <= 1) {\n return '';\n }\n\n return `repeat(${combinedFilesLength === 3 ? 3 : 2}, 1fr)`;\n }, [combinedFiles]);\n\n const galleryContent = useMemo(() => {\n const combinedFilesLength = combinedFiles.length;\n\n if (isEditMode) {\n const items = combinedFiles.map((file) => (\n <GalleryItem\n uploadedFile={file}\n isEditMode\n ratio={ratio}\n handleDeleteFile={handleDeleteFile}\n />\n ));\n\n items.push(\n <AddFile\n setUploadedFiles={setUploadedFiles}\n uploadedFiles={uploadedFiles}\n onAdd={onAdd}\n personId={personId}\n accessToken={accessToken}\n />\n );\n\n return items;\n }\n\n const shortedFiles = combinedFiles.slice(0, 4);\n\n return shortedFiles.map((file, index) => (\n <GalleryItem\n uploadedFile={file}\n isEditMode={false}\n ratio={ratio}\n handleDeleteFile={handleDeleteFile}\n remainingItemsLength={\n combinedFilesLength > 4 && index === 3 ? combinedFilesLength : undefined\n }\n />\n ));\n }, [\n combinedFiles,\n isEditMode,\n uploadedFiles,\n onAdd,\n personId,\n accessToken,\n ratio,\n handleDeleteFile,\n ]);\n\n return useMemo(\n () => (\n <StyledGallery>\n {isEditMode ? (\n <StyledGalleryEditModeWrapper\n onDragOver={(e) => e.preventDefault()}\n onDrop={(e) => void handleDrop(e)}\n >\n {galleryContent}\n </StyledGalleryEditModeWrapper>\n ) : (\n <StyledGalleryItemWrapper\n columns={columns}\n uploadedFileLength={combinedFiles.length}\n >\n {galleryContent}\n </StyledGalleryItemWrapper>\n )}\n </StyledGallery>\n ),\n [isEditMode, galleryContent, columns, combinedFiles.length, handleDrop]\n );\n};\n\nGallery.displayName = 'Gallery';\n\nexport default Gallery;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Gallery.js","names":["_react","_interopRequireWildcard","require","_uuid","_file","_upload","_AddFile","_interopRequireDefault","_GalleryItem","_Gallery","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","Gallery","_ref","accessToken","allowDragAndDrop","isEditMode","files","onAdd","onRemove","personId","fileItems","setFileItems","useState","handlePreviewUrlCallback","previewUrl","file","prevState","map","prevFile","id","handleUploadFileCallback","UploadedFile","uploadedFile","state","useEffect","filesToGeneratePreview","filter","filesToUpload","forEach","generatePreviewUrl","callback","uploadFile","fileToUpload","handleAddFiles","useCallback","filesToAdd","newFileItems","filterDuplicateFile","newFile","push","uuidv4","handleDeleteFile","fileToDelete","filteredFiles","fileId","handleDrop","e","preventDefault","draggedFiles","Array","from","dataTransfer","ratio","useMemo","_fileItems$0$uploaded","_fileItems$","_fileItems$$uploadedF","length","Math","max","columns","combinedFilesLength","galleryContent","items","createElement","fileItem","shortedFiles","slice","index","remainingItemsLength","undefined","StyledGallery","StyledGalleryEditModeWrapper","onDragOver","onDrop","StyledGalleryItemWrapper","uploadedFileLength","displayName","_default","exports"],"sources":["../../src/components/Gallery.tsx"],"sourcesContent":["import React, { DragEvent, FC, useCallback, useEffect, useMemo, useState } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\nimport type { FileItem, Image, Video } from '../types/file';\nimport { filterDuplicateFile, generatePreviewUrl } from '../utils/file';\nimport { uploadFile } from '../utils/upload';\nimport AddFile from './add-file/AddFile';\nimport GalleryItem from './gallery-item/GalleryItem';\nimport {\n StyledGallery,\n StyledGalleryEditModeWrapper,\n StyledGalleryItemWrapper,\n} from './Gallery.styles';\n\nexport type GalleryProps = {\n /**\n * AccessToken of the user\n */\n accessToken: string;\n /**\n * Whether drag and drop is allowed or not\n */\n allowDragAndDrop?: boolean;\n /**\n * Whether images and videos can be edited\n */\n isEditMode?: boolean;\n /**\n * Images and videos which should be displayed\n */\n files?: FileItem[];\n /**\n * Function to be executed when files are added\n */\n onAdd?: (files: FileItem[]) => void;\n /**\n * Function to be executed when a file is removed\n */\n onRemove?: (file: FileItem) => void;\n /**\n * PersonId of the user\n */\n personId: string;\n};\n\nconst Gallery: FC<GalleryProps> = ({\n accessToken,\n allowDragAndDrop = false,\n isEditMode = false,\n files,\n onAdd,\n onRemove,\n personId,\n}) => {\n const [fileItems, setFileItems] = useState<FileItem[]>([]);\n\n /**\n * This function adds a previewUrl to fileItems\n */\n const handlePreviewUrlCallback = (previewUrl: string, file: FileItem) => {\n setFileItems((prevState) =>\n prevState.map((prevFile) => {\n if (prevFile.id === file.id) {\n return { ...prevFile, previewUrl };\n }\n return prevFile;\n })\n );\n };\n\n /**\n * This function adds uploaded files to fileItems\n */\n const handleUploadFileCallback = (file: FileItem, UploadedFile: Video | Image) => {\n setFileItems((prevState) =>\n prevState.map((prevFile) => {\n if (prevFile.id === file.id) {\n return {\n ...prevFile,\n uploadedFile: UploadedFile,\n id: UploadedFile.id,\n state: 'uploaded',\n };\n }\n return prevFile;\n })\n );\n };\n\n /**\n * This function returns the fileItems if some files are updated\n */\n useEffect(() => {\n if (onAdd) {\n onAdd(fileItems);\n }\n }, [fileItems, onAdd]);\n\n /**\n * Prepares files for previewUrl and upload\n */\n useEffect(() => {\n const filesToGeneratePreview = fileItems.filter(\n (file) => file.file && !file.previewUrl && (file.state === 'none' || !file.state)\n );\n\n const filesToUpload = fileItems.filter(\n (file) => !file.uploadedFile && file.state !== 'uploading'\n );\n\n filesToGeneratePreview.forEach((file) => {\n if (!file.file) {\n return;\n }\n\n generatePreviewUrl({\n file: file.file,\n callback: (previewUrl) => handlePreviewUrlCallback(previewUrl, file),\n });\n });\n\n filesToUpload.forEach((file) => {\n setFileItems((prevState) =>\n prevState.map((prevFile) => {\n if (prevFile.id === file.id) {\n return { ...prevFile, state: 'uploading' };\n }\n return prevFile;\n })\n );\n\n void uploadFile({\n fileToUpload: file,\n personId,\n accessToken,\n callback: (UploadedFile) => handleUploadFileCallback(file, UploadedFile),\n });\n });\n }, [accessToken, fileItems, personId]);\n\n /**\n * This function formats and adds files to fileItems\n */\n const handleAddFiles = useCallback(\n (filesToAdd: File[]) => {\n const newFileItems: FileItem[] = [];\n\n filesToAdd.forEach((file) => {\n if (file && !filterDuplicateFile({ files: fileItems, newFile: file })) {\n newFileItems.push({\n id: uuidv4(),\n file,\n state: 'none',\n });\n }\n });\n\n setFileItems((prevState) => [...prevState, ...newFileItems]);\n },\n [fileItems]\n );\n\n /**\n * This function adds external files to fileItems\n */\n useEffect(() => {\n if (files) {\n const newFileItems: FileItem[] = [];\n\n files.forEach((file) => {\n newFileItems.push({\n id: uuidv4(),\n uploadedFile: file.uploadedFile,\n file: file.file,\n state: file.uploadedFile ? 'uploaded' : 'none',\n });\n });\n\n setFileItems((prevState) => [...prevState, ...newFileItems]);\n }\n }, [files]);\n\n /**\n * This function deletes a selected file from the file list\n */\n const handleDeleteFile = useCallback(\n (id?: string) => {\n let fileToDelete: FileItem | undefined;\n\n const filteredFiles = fileItems.filter((file) => {\n const fileId = file.id;\n\n if (fileId === id) {\n fileToDelete = file;\n }\n\n return fileId !== id;\n });\n\n setFileItems(filteredFiles);\n\n if (!fileToDelete || !onRemove) {\n return;\n }\n\n onRemove(fileToDelete);\n },\n [fileItems, onRemove]\n );\n\n /**\n * This function handles the drag and drop\n */\n const handleDrop = useCallback(\n (e: DragEvent<HTMLDivElement>) => {\n if (!allowDragAndDrop) {\n return;\n }\n\n e.preventDefault();\n const draggedFiles = Array.from(e.dataTransfer.files);\n\n handleAddFiles(draggedFiles);\n },\n [allowDragAndDrop, handleAddFiles]\n );\n\n /**\n * Returns the ratio of the single file\n */\n const ratio = useMemo(() => {\n switch (fileItems.length) {\n case 0:\n return 0;\n case 1:\n return Math.max(fileItems[0]?.uploadedFile?.ratio ?? 1, 1);\n case 2:\n return 2;\n case 3:\n return 3;\n default:\n return 1;\n }\n // // If the length is 1, the ratio or at least 1 is returned\n // fileItems.length === 1 ? Math.max(fileItems[0]?.uploadedFile?.ratio ?? 1, 1) : 1,\n }, [fileItems]);\n\n /**\n * Returns the number of columns\n */\n const columns = useMemo(() => {\n const combinedFilesLength = fileItems.length;\n\n if (combinedFilesLength <= 1) {\n return '';\n }\n\n return `repeat(${combinedFilesLength === 3 ? 3 : 2}, 1fr)`;\n }, [fileItems.length]);\n\n const galleryContent = useMemo(() => {\n const combinedFilesLength = fileItems.length;\n\n if (isEditMode) {\n const items = fileItems.map((file) => (\n <GalleryItem fileItem={file} isEditMode handleDeleteFile={handleDeleteFile} />\n ));\n\n items.push(<AddFile onAdd={handleAddFiles} />);\n\n return items;\n }\n\n const shortedFiles = fileItems.slice(0, 4);\n\n return shortedFiles.map((file, index) => (\n <GalleryItem\n fileItem={file}\n isEditMode={false}\n handleDeleteFile={handleDeleteFile}\n remainingItemsLength={\n combinedFilesLength > 4 && index === 3 ? combinedFilesLength : undefined\n }\n />\n ));\n }, [fileItems, isEditMode, handleAddFiles, handleDeleteFile]);\n\n return useMemo(\n () => (\n <StyledGallery>\n {isEditMode ? (\n <StyledGalleryEditModeWrapper\n onDragOver={(e) => e.preventDefault()}\n onDrop={(e) => void handleDrop(e)}\n >\n {galleryContent}\n </StyledGalleryEditModeWrapper>\n ) : (\n <StyledGalleryItemWrapper\n ratio={ratio}\n columns={columns}\n uploadedFileLength={fileItems.length}\n >\n {galleryContent}\n </StyledGalleryItemWrapper>\n )}\n </StyledGallery>\n ),\n [isEditMode, galleryContent, ratio, columns, fileItems.length, handleDrop]\n );\n};\n\nGallery.displayName = 'Gallery';\n\nexport default Gallery;\n"],"mappings":"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"}
@@ -2,5 +2,6 @@ export declare const StyledGallery: import("styled-components").StyledComponent<
2
2
  export declare const StyledGalleryItemWrapper: import("styled-components").StyledComponent<"div", any, {
3
3
  columns: string;
4
4
  uploadedFileLength: number;
5
+ ratio: number;
5
6
  }, never>;
6
7
  export declare const StyledGalleryEditModeWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
@@ -13,13 +13,15 @@ const StyledGalleryItemWrapper = _styledComponents.default.div`
13
13
  ${_ref => {
14
14
  let {
15
15
  columns,
16
- uploadedFileLength
16
+ uploadedFileLength,
17
+ ratio
17
18
  } = _ref;
18
19
  return uploadedFileLength > 1 && (0, _styledComponents.css)`
19
20
  display: grid;
20
21
  grid-template-columns: ${columns};
21
22
  row-gap: 5px;
22
23
  column-gap: 5px;
24
+ aspect-ratio: ${ratio};
23
25
  `;
24
26
  }}
25
27
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"Gallery.styles.js","names":["_styledComponents","_interopRequireWildcard","require","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","StyledGallery","styled","div","exports","StyledGalleryItemWrapper","_ref","columns","uploadedFileLength","css","StyledGalleryEditModeWrapper"],"sources":["../../src/components/Gallery.styles.ts"],"sourcesContent":["import styled, { css } from 'styled-components';\n\nexport const StyledGallery = styled.div``;\n\nexport const StyledGalleryItemWrapper = styled.div<{ columns: string; uploadedFileLength: number }>`\n ${({ columns, uploadedFileLength }) =>\n uploadedFileLength > 1 &&\n css`\n display: grid;\n grid-template-columns: ${columns};\n row-gap: 5px;\n column-gap: 5px;\n `}\n`;\n\nexport const StyledGalleryEditModeWrapper = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n row-gap: 10px;\n column-gap: 10px;\n padding: 15px;\n\n & > * {\n flex-basis: calc(25% - 7.5px);\n }\n`;\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,uBAAA,CAAAC,OAAA;AAAgD,SAAAC,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAH,wBAAAO,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,CAAAJ,OAAA,GAAAF,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAEzC,MAAMW,aAAa,GAAGC,yBAAM,CAACC,GAAI,EAAC;AAACC,OAAA,CAAAH,aAAA,GAAAA,aAAA;AAEnC,MAAMI,wBAAwB,GAAGH,yBAAM,CAACC,GAAqD;AACpG,MAAMG,IAAA;EAAA,IAAC;IAAEC,OAAO;IAAEC;EAAmB,CAAC,GAAAF,IAAA;EAAA,OAC9BE,kBAAkB,GAAG,CAAC,IACtB,IAAAC,qBAAG,CAAC;AACZ;AACA,qCAAqCF,OAAQ;AAC7C;AACA;AACA,SAAS;AAAA,CAAC;AACV,CAAC;AAACH,OAAA,CAAAC,wBAAA,GAAAA,wBAAA;AAEK,MAAMK,4BAA4B,GAAGR,yBAAM,CAACC,GAAI;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAACC,OAAA,CAAAM,4BAAA,GAAAA,4BAAA"}
1
+ {"version":3,"file":"Gallery.styles.js","names":["_styledComponents","_interopRequireWildcard","require","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","StyledGallery","styled","div","exports","StyledGalleryItemWrapper","_ref","columns","uploadedFileLength","ratio","css","StyledGalleryEditModeWrapper"],"sources":["../../src/components/Gallery.styles.ts"],"sourcesContent":["import styled, { css } from 'styled-components';\n\nexport const StyledGallery = styled.div``;\n\nexport const StyledGalleryItemWrapper = styled.div<{\n columns: string;\n uploadedFileLength: number;\n ratio: number;\n}>`\n ${({ columns, uploadedFileLength, ratio }) =>\n uploadedFileLength > 1 &&\n css`\n display: grid;\n grid-template-columns: ${columns};\n row-gap: 5px;\n column-gap: 5px;\n aspect-ratio: ${ratio};\n `}\n`;\n\nexport const StyledGalleryEditModeWrapper = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n row-gap: 10px;\n column-gap: 10px;\n padding: 15px;\n\n & > * {\n flex-basis: calc(25% - 7.5px);\n }\n`;\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,uBAAA,CAAAC,OAAA;AAAgD,SAAAC,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAH,wBAAAO,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,CAAAJ,OAAA,GAAAF,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAEzC,MAAMW,aAAa,GAAGC,yBAAM,CAACC,GAAI,EAAC;AAACC,OAAA,CAAAH,aAAA,GAAAA,aAAA;AAEnC,MAAMI,wBAAwB,GAAGH,yBAAM,CAACC,GAI5C;AACH,MAAMG,IAAA;EAAA,IAAC;IAAEC,OAAO;IAAEC,kBAAkB;IAAEC;EAAM,CAAC,GAAAH,IAAA;EAAA,OACrCE,kBAAkB,GAAG,CAAC,IACtB,IAAAE,qBAAG,CAAC;AACZ;AACA,qCAAqCH,OAAQ;AAC7C;AACA;AACA,4BAA4BE,KAAM;AAClC,SAAS;AAAA,CAAC;AACV,CAAC;AAACL,OAAA,CAAAC,wBAAA,GAAAA,wBAAA;AAEK,MAAMM,4BAA4B,GAAGT,yBAAM,CAACC,GAAI;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAACC,OAAA,CAAAO,4BAAA,GAAAA,4BAAA"}
@@ -1,26 +1,9 @@
1
- import { Dispatch, FC, SetStateAction } from 'react';
2
- import type { UploadedFile } from '../../types/file';
1
+ import { FC } from 'react';
3
2
  export type AddFileProps = {
4
- /**
5
- * Function to add files to the uploaded files
6
- */
7
- setUploadedFiles: Dispatch<SetStateAction<UploadedFile[]>>;
8
- /**
9
- * Images and videos which should be displayed
10
- */
11
- uploadedFiles: UploadedFile[];
12
3
  /**
13
4
  * Function to be executed when files are added
14
5
  */
15
- onAdd?: (files: UploadedFile[]) => void;
16
- /**
17
- * PersonId of the user
18
- */
19
- personId: string;
20
- /**
21
- * AccessToken of the user
22
- */
23
- accessToken: string;
6
+ onAdd: (files: File[]) => void;
24
7
  };
25
8
  declare const AddFile: FC<AddFileProps>;
26
9
  export default AddFile;
@@ -7,67 +7,20 @@ exports.default = void 0;
7
7
  var _core = require("@chayns-components/core");
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _file = require("../../utils/file");
10
- var _upload = require("../../utils/upload");
11
10
  var _AddFile = require("./AddFile.styles");
12
11
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
12
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
13
  const AddFile = _ref => {
15
14
  let {
16
- setUploadedFiles,
17
- uploadedFiles,
18
- onAdd,
19
- accessToken,
20
- personId
15
+ onAdd
21
16
  } = _ref;
22
- /**
23
- * Open a dialog to select files
24
- */
25
17
  const openSelectDialog = (0, _react.useCallback)(async () => {
26
- const selectedFiles = await (0, _file.selectFiles)({
18
+ const files = await (0, _file.selectFiles)({
27
19
  multiple: true,
28
20
  type: 'image/*, video/*'
29
21
  });
30
- if (!selectedFiles || selectedFiles.length <= 0) {
31
- return;
32
- }
33
- const fileArray = (0, _file.convertFileListToArray)(selectedFiles);
34
-
35
- // Filters files to use only under 64MB
36
- const filteredFileArray = fileArray.filter(_ref2 => {
37
- let {
38
- size,
39
- type
40
- } = _ref2;
41
- const sizeInMB = size / 1024 / 1024;
42
- if (type.includes('video/') && sizeInMB > 500) {
43
- return false;
44
- }
45
- return !(type.includes('image/') && sizeInMB > 64);
46
- });
47
- if (fileArray.length !== filteredFileArray.length) {
48
- // ToDo show dialog that some files are to big
49
- }
50
- if (filteredFileArray.length === 0) {
51
- // ToDo show dialog that all files are to big
52
-
53
- return;
54
- }
55
- const updatedFiles = await (0, _upload.uploadFiles)({
56
- filesToUpload: filteredFileArray,
57
- personId,
58
- accessToken
59
- });
60
- const {
61
- newUniqueFiles
62
- } = (0, _file.filterDuplicateFiles)({
63
- oldFiles: uploadedFiles,
64
- newFiles: updatedFiles
65
- });
66
- if (onAdd) {
67
- onAdd(newUniqueFiles);
68
- }
69
- setUploadedFiles(prevState => [...prevState, ...newUniqueFiles]);
70
- }, [accessToken, onAdd, personId, setUploadedFiles, uploadedFiles]);
22
+ onAdd(files);
23
+ }, [onAdd]);
71
24
  return /*#__PURE__*/_react.default.createElement(_AddFile.StyledAddFile, {
72
25
  key: "addButton"
73
26
  }, /*#__PURE__*/_react.default.createElement(_AddFile.StyledAddFIleIconWrapper, {
@@ -1 +1 @@
1
- {"version":3,"file":"AddFile.js","names":["_core","require","_react","_interopRequireWildcard","_file","_upload","_AddFile","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","AddFile","_ref","setUploadedFiles","uploadedFiles","onAdd","accessToken","personId","openSelectDialog","useCallback","selectedFiles","selectFiles","multiple","type","length","fileArray","convertFileListToArray","filteredFileArray","filter","_ref2","size","sizeInMB","includes","updatedFiles","uploadFiles","filesToUpload","newUniqueFiles","filterDuplicateFiles","oldFiles","newFiles","prevState","createElement","StyledAddFile","StyledAddFIleIconWrapper","onClick","Icon","icons","displayName","_default","exports"],"sources":["../../../src/components/add-file/AddFile.tsx"],"sourcesContent":["import { Icon } from '@chayns-components/core';\nimport React, { Dispatch, FC, SetStateAction, useCallback } from 'react';\nimport type { UploadedFile } from '../../types/file';\nimport { convertFileListToArray, filterDuplicateFiles, selectFiles } from '../../utils/file';\nimport { uploadFiles } from '../../utils/upload';\nimport { StyledAddFile, StyledAddFIleIconWrapper } from './AddFile.styles';\n\nexport type AddFileProps = {\n /**\n * Function to add files to the uploaded files\n */\n setUploadedFiles: Dispatch<SetStateAction<UploadedFile[]>>;\n /**\n * Images and videos which should be displayed\n */\n uploadedFiles: UploadedFile[];\n /**\n * Function to be executed when files are added\n */\n onAdd?: (files: UploadedFile[]) => void;\n /**\n * PersonId of the user\n */\n personId: string;\n /**\n * AccessToken of the user\n */\n accessToken: string;\n};\n\nconst AddFile: FC<AddFileProps> = ({\n setUploadedFiles,\n uploadedFiles,\n onAdd,\n accessToken,\n personId,\n}) => {\n /**\n * Open a dialog to select files\n */\n const openSelectDialog = useCallback(async () => {\n const selectedFiles = await selectFiles({\n multiple: true,\n type: 'image/*, video/*',\n });\n\n if (!selectedFiles || selectedFiles.length <= 0) {\n return;\n }\n\n const fileArray = convertFileListToArray(selectedFiles);\n\n // Filters files to use only under 64MB\n const filteredFileArray = fileArray.filter(({ size, type }) => {\n const sizeInMB = size / 1024 / 1024;\n\n if (type.includes('video/') && sizeInMB > 500) {\n return false;\n }\n\n return !(type.includes('image/') && sizeInMB > 64);\n });\n\n if (fileArray.length !== filteredFileArray.length) {\n // ToDo show dialog that some files are to big\n }\n\n if (filteredFileArray.length === 0) {\n // ToDo show dialog that all files are to big\n\n return;\n }\n\n const updatedFiles = await uploadFiles({\n filesToUpload: filteredFileArray,\n personId,\n accessToken,\n });\n\n const { newUniqueFiles } = filterDuplicateFiles({\n oldFiles: uploadedFiles,\n newFiles: updatedFiles,\n });\n\n if (onAdd) {\n onAdd(newUniqueFiles);\n }\n\n setUploadedFiles((prevState) => [...prevState, ...newUniqueFiles]);\n }, [accessToken, onAdd, personId, setUploadedFiles, uploadedFiles]);\n\n return (\n <StyledAddFile key=\"addButton\">\n <StyledAddFIleIconWrapper onClick={() => void openSelectDialog()}>\n <Icon size={40} icons={['fa fa-plus']} />\n </StyledAddFIleIconWrapper>\n </StyledAddFile>\n );\n};\n\nAddFile.displayName = 'AddFile';\n\nexport default AddFile;\n"],"mappings":"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"}
1
+ {"version":3,"file":"AddFile.js","names":["_core","require","_react","_interopRequireWildcard","_file","_AddFile","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","AddFile","_ref","onAdd","openSelectDialog","useCallback","files","selectFiles","multiple","type","createElement","StyledAddFile","StyledAddFIleIconWrapper","onClick","Icon","size","icons","displayName","_default","exports"],"sources":["../../../src/components/add-file/AddFile.tsx"],"sourcesContent":["import { Icon } from '@chayns-components/core';\nimport React, { FC, useCallback } from 'react';\nimport { selectFiles } from '../../utils/file';\nimport { StyledAddFile, StyledAddFIleIconWrapper } from './AddFile.styles';\n\nexport type AddFileProps = {\n /**\n * Function to be executed when files are added\n */\n onAdd: (files: File[]) => void;\n};\n\nconst AddFile: FC<AddFileProps> = ({ onAdd }) => {\n const openSelectDialog = useCallback(async () => {\n const files = await selectFiles({\n multiple: true,\n type: 'image/*, video/*',\n });\n\n onAdd(files);\n }, [onAdd]);\n\n return (\n <StyledAddFile key=\"addButton\">\n <StyledAddFIleIconWrapper onClick={() => void openSelectDialog()}>\n <Icon size={40} icons={['fa fa-plus']} />\n </StyledAddFIleIconWrapper>\n </StyledAddFile>\n );\n};\n\nAddFile.displayName = 'AddFile';\n\nexport default AddFile;\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,uBAAA,CAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AAA2E,SAAAK,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAJ,wBAAAQ,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,CAAAJ,OAAA,GAAAF,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAS3E,MAAMW,OAAyB,GAAGC,IAAA,IAAe;EAAA,IAAd;IAAEC;EAAM,CAAC,GAAAD,IAAA;EACxC,MAAME,gBAAgB,GAAG,IAAAC,kBAAW,EAAC,YAAY;IAC7C,MAAMC,KAAK,GAAG,MAAM,IAAAC,iBAAW,EAAC;MAC5BC,QAAQ,EAAE,IAAI;MACdC,IAAI,EAAE;IACV,CAAC,CAAC;IAEFN,KAAK,CAACG,KAAK,CAAC;EAChB,CAAC,EAAE,CAACH,KAAK,CAAC,CAAC;EAEX,oBACI5B,MAAA,CAAAW,OAAA,CAAAwB,aAAA,CAAChC,QAAA,CAAAiC,aAAa;IAAChB,GAAG,EAAC;EAAW,gBAC1BpB,MAAA,CAAAW,OAAA,CAAAwB,aAAA,CAAChC,QAAA,CAAAkC,wBAAwB;IAACC,OAAO,EAAEA,CAAA,KAAM,KAAKT,gBAAgB,CAAC;EAAE,gBAC7D7B,MAAA,CAAAW,OAAA,CAAAwB,aAAA,CAACrC,KAAA,CAAAyC,IAAI;IAACC,IAAI,EAAE,EAAG;IAACC,KAAK,EAAE,CAAC,YAAY;EAAE,CAAE,CAClB,CACf,CAAC;AAExB,CAAC;AAEDf,OAAO,CAACgB,WAAW,GAAG,SAAS;AAAC,IAAAC,QAAA,GAEjBjB,OAAO;AAAAkB,OAAA,CAAAjC,OAAA,GAAAgC,QAAA"}
@@ -1,22 +1,18 @@
1
1
  import { FC } from 'react';
2
- import type { UploadedFile } from '../../types/file';
2
+ import type { FileItem } from '../../types/file';
3
3
  export type GalleryItemProps = {
4
4
  /**
5
5
  * Images and videos which should be displayed
6
6
  */
7
- uploadedFile: UploadedFile;
7
+ fileItem: FileItem;
8
8
  /**
9
9
  * Whether images and videos can be edited
10
10
  */
11
11
  isEditMode: boolean;
12
- /**
13
- * Ratio of the images and videos
14
- */
15
- ratio: number;
16
12
  /**
17
13
  * Function to be executed wehen a file is deleted
18
14
  */
19
- handleDeleteFile: (url: string) => void;
15
+ handleDeleteFile: (id?: string) => void;
20
16
  /**
21
17
  * Length of the uploaded files
22
18
  */