@chayns-components/gallery 5.0.0-beta.98 → 5.0.0-beta.981

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 (76) hide show
  1. package/README.md +4 -15
  2. package/lib/cjs/components/Gallery.js +317 -0
  3. package/lib/cjs/components/Gallery.js.map +1 -0
  4. package/lib/cjs/components/Gallery.styles.js +92 -0
  5. package/lib/cjs/components/Gallery.styles.js.map +1 -0
  6. package/lib/cjs/components/add-file/AddFile.js +33 -0
  7. package/lib/cjs/components/add-file/AddFile.js.map +1 -0
  8. package/lib/cjs/components/add-file/AddFile.styles.js +23 -0
  9. package/lib/cjs/components/add-file/AddFile.styles.js.map +1 -0
  10. package/lib/cjs/components/gallery-item/GalleryItem.js +43 -0
  11. package/lib/cjs/components/gallery-item/GalleryItem.js.map +1 -0
  12. package/lib/cjs/components/gallery-item/GalleryItem.styles.js +51 -0
  13. package/lib/cjs/components/gallery-item/GalleryItem.styles.js.map +1 -0
  14. package/lib/cjs/components/gallery-item/media-item/MediaItem.js +52 -0
  15. package/lib/cjs/components/gallery-item/media-item/MediaItem.js.map +1 -0
  16. package/lib/cjs/components/gallery-item/media-item/MediaItem.styles.js +62 -0
  17. package/lib/cjs/components/gallery-item/media-item/MediaItem.styles.js.map +1 -0
  18. package/lib/cjs/components/gallery-item/preview-item/PreviewItem.js +45 -0
  19. package/lib/cjs/components/gallery-item/preview-item/PreviewItem.js.map +1 -0
  20. package/lib/cjs/components/gallery-item/preview-item/PreviewItem.styles.js +43 -0
  21. package/lib/cjs/components/gallery-item/preview-item/PreviewItem.styles.js.map +1 -0
  22. package/lib/cjs/index.js +21 -0
  23. package/lib/cjs/index.js.map +1 -0
  24. package/lib/cjs/types/gallery.js +12 -0
  25. package/lib/cjs/types/gallery.js.map +1 -0
  26. package/lib/cjs/utils/file.js +51 -0
  27. package/lib/cjs/utils/file.js.map +1 -0
  28. package/lib/esm/components/Gallery.js +307 -0
  29. package/lib/esm/components/Gallery.js.map +1 -0
  30. package/lib/esm/components/Gallery.styles.js +91 -0
  31. package/lib/esm/components/Gallery.styles.js.map +1 -0
  32. package/lib/esm/components/add-file/AddFile.js +26 -0
  33. package/lib/esm/components/add-file/AddFile.js.map +1 -0
  34. package/lib/esm/components/add-file/AddFile.styles.js +22 -0
  35. package/lib/esm/components/add-file/AddFile.styles.js.map +1 -0
  36. package/lib/esm/components/gallery-item/GalleryItem.js +37 -0
  37. package/lib/esm/components/gallery-item/GalleryItem.js.map +1 -0
  38. package/lib/esm/components/gallery-item/GalleryItem.styles.js +50 -0
  39. package/lib/esm/components/gallery-item/GalleryItem.styles.js.map +1 -0
  40. package/lib/esm/components/gallery-item/media-item/MediaItem.js +45 -0
  41. package/lib/esm/components/gallery-item/media-item/MediaItem.js.map +1 -0
  42. package/lib/esm/components/gallery-item/media-item/MediaItem.styles.js +73 -0
  43. package/lib/esm/components/gallery-item/media-item/MediaItem.styles.js.map +1 -0
  44. package/lib/esm/components/gallery-item/preview-item/PreviewItem.js +41 -0
  45. package/lib/esm/components/gallery-item/preview-item/PreviewItem.js.map +1 -0
  46. package/lib/esm/components/gallery-item/preview-item/PreviewItem.styles.js +45 -0
  47. package/lib/esm/components/gallery-item/preview-item/PreviewItem.styles.js.map +1 -0
  48. package/lib/esm/index.js +5 -0
  49. package/lib/esm/index.js.map +1 -0
  50. package/lib/esm/types/gallery.js +6 -0
  51. package/lib/esm/types/gallery.js.map +1 -0
  52. package/lib/esm/utils/file.js +47 -0
  53. package/lib/esm/utils/file.js.map +1 -0
  54. package/lib/types/components/Gallery.d.ts +47 -0
  55. package/lib/types/components/Gallery.styles.d.ts +10 -0
  56. package/lib/types/components/add-file/AddFile.d.ts +9 -0
  57. package/lib/types/components/add-file/AddFile.styles.d.ts +4 -0
  58. package/lib/types/components/gallery-item/GalleryItem.d.ts +30 -0
  59. package/lib/types/components/gallery-item/GalleryItem.styles.d.ts +5 -0
  60. package/lib/types/components/gallery-item/media-item/MediaItem.d.ts +22 -0
  61. package/lib/types/components/gallery-item/media-item/MediaItem.styles.d.ts +279 -0
  62. package/lib/types/components/gallery-item/preview-item/PreviewItem.d.ts +14 -0
  63. package/lib/types/components/gallery-item/preview-item/PreviewItem.styles.d.ts +273 -0
  64. package/lib/types/index.d.ts +2 -0
  65. package/lib/types/types/gallery.d.ts +4 -0
  66. package/lib/types/utils/file.d.ts +17 -0
  67. package/package.json +47 -28
  68. package/lib/components/gallery/Gallery.d.ts +0 -4
  69. package/lib/components/gallery/Gallery.js +0 -14
  70. package/lib/components/gallery/Gallery.js.map +0 -1
  71. package/lib/components/gallery/Gallery.styles.d.ts +0 -1
  72. package/lib/components/gallery/Gallery.styles.js +0 -11
  73. package/lib/components/gallery/Gallery.styles.js.map +0 -1
  74. package/lib/index.d.ts +0 -1
  75. package/lib/index.js +0 -14
  76. package/lib/index.js.map +0 -1
package/README.md CHANGED
@@ -15,14 +15,14 @@
15
15
 
16
16
  ## Installation
17
17
 
18
- First you need to install the typewriter part of the chayns-components.
18
+ First you need to install the gallery part of the chayns-components.
19
19
 
20
20
  ```bash
21
21
  # NPM
22
- npm install @chayns-components/typewriter
22
+ npm install @chayns-components/gallery
23
23
 
24
24
  # Yarn
25
- yarn add @chayns-components/typewriter
25
+ yarn add @chayns-components/gallery
26
26
  ```
27
27
 
28
28
  > **Information:** Since the components have now been implemented with the styled-components
@@ -31,15 +31,4 @@ yarn add @chayns-components/typewriter
31
31
 
32
32
  ## Usage
33
33
 
34
- You can use the components in your project as in the following example.
35
-
36
- ```typescript jsx
37
- import { Typewriter } from '@chayns-components/typewriter';
38
-
39
- <Typewriter>
40
- Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt
41
- ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo
42
- dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est. Lorem ipsum dolor
43
- sit amet.
44
- </Typewriter>;
45
- ```
34
+ For detailed usage visit the [storybook](https://components.chayns.site/storybook).
@@ -0,0 +1,317 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _core = require("@chayns-components/core");
8
+ var _chaynsApi = require("chayns-api");
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _uuid = require("uuid");
11
+ var _gallery = require("../types/gallery");
12
+ var _file = require("../utils/file");
13
+ var _AddFile = _interopRequireDefault(require("./add-file/AddFile"));
14
+ var _GalleryItem = _interopRequireDefault(require("./gallery-item/GalleryItem"));
15
+ var _Gallery = require("./Gallery.styles");
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
18
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
19
+ const Gallery = ({
20
+ allowDragAndDrop = false,
21
+ doubleFileDialogMessage = 'Diese Datei ist bereits vorhanden',
22
+ isEditMode = false,
23
+ fileMinWidth = 100,
24
+ files,
25
+ maxFiles,
26
+ onAdd,
27
+ onFileCountChange,
28
+ onRemove,
29
+ viewMode = _gallery.GalleryViewMode.GRID
30
+ }) => {
31
+ const [fileItems, setFileItems] = (0, _react.useState)([]);
32
+
33
+ /**
34
+ * This function adds a previewUrl to fileItems
35
+ */
36
+ const handlePreviewUrlCallback = (previewUrl, file) => {
37
+ setFileItems(prevState => prevState.map(prevFile => {
38
+ if (prevFile.id === file.id) {
39
+ return {
40
+ ...prevFile,
41
+ previewUrl
42
+ };
43
+ }
44
+ return prevFile;
45
+ }));
46
+ };
47
+ const callDuplicateFileDialog = (0, _react.useCallback)(() => {
48
+ (0, _chaynsApi.createDialog)({
49
+ type: _chaynsApi.DialogType.ALERT,
50
+ text: doubleFileDialogMessage
51
+ });
52
+ }, [doubleFileDialogMessage]);
53
+
54
+ /**
55
+ * This function adds uploaded files to fileItems
56
+ */
57
+ const handleUploadFileCallback = (0, _react.useCallback)((file, uploadedFile) => {
58
+ setFileItems(prevState => {
59
+ const updatedState = prevState.map(prevFile => {
60
+ var _prevFile$uploadedFil;
61
+ if (((_prevFile$uploadedFil = prevFile.uploadedFile) === null || _prevFile$uploadedFil === void 0 ? void 0 : _prevFile$uploadedFil.url) === uploadedFile.url) {
62
+ callDuplicateFileDialog();
63
+ return undefined;
64
+ }
65
+ if (prevFile.id === file.id) {
66
+ if (typeof onAdd === 'function') {
67
+ const prevElement = prevState.find(({
68
+ uploadedFile: newUploadedFile
69
+ }) => (newUploadedFile === null || newUploadedFile === void 0 ? void 0 : newUploadedFile.url) === (uploadedFile === null || uploadedFile === void 0 ? void 0 : uploadedFile.url));
70
+ if (!prevElement) {
71
+ onAdd({
72
+ file: uploadedFile,
73
+ id: file.id
74
+ });
75
+ }
76
+ }
77
+ return {
78
+ ...prevFile,
79
+ uploadedFile,
80
+ state: 'uploaded'
81
+ };
82
+ }
83
+ return prevFile;
84
+ });
85
+ const tmp = [];
86
+ updatedState.forEach(updatedFile => {
87
+ if (updatedFile !== undefined) {
88
+ tmp.push(updatedFile);
89
+ }
90
+ });
91
+ return tmp ?? [];
92
+ });
93
+ }, [callDuplicateFileDialog, onAdd]);
94
+
95
+ /**
96
+ * Returns the current count to check if all files are uploaded
97
+ */
98
+ (0, _react.useEffect)(() => {
99
+ if (typeof onFileCountChange === 'function') {
100
+ onFileCountChange(fileItems.length);
101
+ }
102
+ }, [fileItems.length, onFileCountChange]);
103
+
104
+ /**
105
+ * Prepares files for previewUrl and upload
106
+ */
107
+ (0, _react.useEffect)(() => {
108
+ const filesToGeneratePreview = fileItems.filter(file => file.file && !file.previewUrl && (file.state === 'none' || !file.state));
109
+ const filesToUpload = fileItems.filter(file => !file.uploadedFile && file.state !== 'uploading');
110
+ filesToGeneratePreview.forEach(file => {
111
+ if (!file.file) {
112
+ return;
113
+ }
114
+ if (file.file.type.includes('video/')) {
115
+ (0, _file.generateVideoThumbnail)({
116
+ file: file.file,
117
+ callback: previewUrl => handlePreviewUrlCallback(previewUrl, file)
118
+ });
119
+ return;
120
+ }
121
+ (0, _file.generatePreviewUrl)({
122
+ file: file.file,
123
+ callback: previewUrl => handlePreviewUrlCallback(previewUrl, file)
124
+ });
125
+ });
126
+ filesToUpload.forEach(file => {
127
+ setFileItems(prevState => prevState.map(prevFile => {
128
+ if (prevFile.id === file.id) {
129
+ return {
130
+ ...prevFile,
131
+ state: 'uploading'
132
+ };
133
+ }
134
+ return prevFile;
135
+ }));
136
+ void (0, _core.uploadFile)({
137
+ fileToUpload: file,
138
+ callback: UploadedFile => handleUploadFileCallback(file, UploadedFile)
139
+ });
140
+ });
141
+ }, [fileItems, handleUploadFileCallback]);
142
+
143
+ /**
144
+ * This function formats and adds files to fileItems
145
+ */
146
+ const handleAddFiles = (0, _react.useCallback)(filesToAdd => {
147
+ const newFileItems = [];
148
+ filesToAdd.forEach(file => {
149
+ if (file && !(0, _file.filterDuplicateFile)({
150
+ files: fileItems,
151
+ newFile: file
152
+ })) {
153
+ newFileItems.push({
154
+ id: (0, _uuid.v4)(),
155
+ file,
156
+ state: 'none'
157
+ });
158
+ }
159
+ });
160
+ let tmp = newFileItems;
161
+ if (maxFiles) {
162
+ tmp = newFileItems.slice(0, maxFiles - (fileItems.length + filesToAdd.length - 1));
163
+ }
164
+ setFileItems(prevState => [...prevState, ...tmp]);
165
+ }, [fileItems, maxFiles]);
166
+
167
+ /**
168
+ * This function adds external files to fileItems
169
+ */
170
+ (0, _react.useEffect)(() => {
171
+ if (files) {
172
+ const newFileItems = [];
173
+ files.forEach(file => {
174
+ newFileItems.push({
175
+ id: file.id ?? (0, _uuid.v4)(),
176
+ uploadedFile: file.file,
177
+ file: undefined,
178
+ state: 'uploaded',
179
+ previewUrl: undefined
180
+ });
181
+ });
182
+ setFileItems(prevState => {
183
+ const updatedItems = prevState.map(prevItem => {
184
+ const newItem = newFileItems.find(item => item.uploadedFile && item.uploadedFile.url === (prevItem.uploadedFile && prevItem.uploadedFile.url));
185
+ return newItem || prevItem;
186
+ });
187
+ return updatedItems.concat(newFileItems.filter(newItem => !prevState.some(prevItem => prevItem.uploadedFile && newItem.uploadedFile && prevItem.uploadedFile.url === newItem.uploadedFile.url)));
188
+ });
189
+ }
190
+ }, [files]);
191
+
192
+ /**
193
+ * This function deletes a selected file from the file list
194
+ */
195
+ const handleDeleteFile = (0, _react.useCallback)(id => {
196
+ let fileToDelete;
197
+ const filteredFiles = fileItems.filter(file => {
198
+ const fileId = file.id;
199
+ if (fileId === id && file.uploadedFile) {
200
+ fileToDelete = {
201
+ file: file.uploadedFile,
202
+ id
203
+ };
204
+ }
205
+ return fileId !== id;
206
+ });
207
+ setFileItems(filteredFiles);
208
+ if (!fileToDelete || typeof onRemove !== 'function') {
209
+ return;
210
+ }
211
+ onRemove(fileToDelete);
212
+ }, [fileItems, onRemove]);
213
+
214
+ /**
215
+ * This function handles the drag and drop
216
+ */
217
+ const handleDrop = (0, _react.useCallback)(e => {
218
+ if (!allowDragAndDrop) {
219
+ return;
220
+ }
221
+ e.preventDefault();
222
+ const draggedFiles = Array.from(e.dataTransfer.files);
223
+ handleAddFiles(draggedFiles);
224
+ }, [allowDragAndDrop, handleAddFiles]);
225
+
226
+ /**
227
+ * Opens the files in a slideShow
228
+ */
229
+ const openFiles = (0, _react.useCallback)(file => {
230
+ const startIndex = fileItems.findIndex(item => item.id === file.id);
231
+ const items = fileItems.map(item => {
232
+ var _item$uploadedFile;
233
+ return {
234
+ url: ((_item$uploadedFile = item.uploadedFile) === null || _item$uploadedFile === void 0 ? void 0 : _item$uploadedFile.url.replace('_0.mp4', '.mp4')) ?? '',
235
+ mediaType: item.uploadedFile && 'thumbnailUrl' in item.uploadedFile ? _chaynsApi.MediaType.VIDEO : _chaynsApi.MediaType.IMAGE
236
+ };
237
+ });
238
+
239
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
240
+ // @ts-ignore
241
+ void (0, _chaynsApi.openMedia)({
242
+ items,
243
+ startIndex
244
+ });
245
+ }, [fileItems]);
246
+
247
+ /**
248
+ * Returns the ratio of the single file
249
+ */
250
+ const ratio = (0, _react.useMemo)(() => {
251
+ var _fileItems$;
252
+ switch (fileItems.length) {
253
+ case 0:
254
+ return 0;
255
+ case 1:
256
+ return Math.max(((_fileItems$ = fileItems[0]) === null || _fileItems$ === void 0 || (_fileItems$ = _fileItems$.uploadedFile) === null || _fileItems$ === void 0 ? void 0 : _fileItems$.ratio) ?? 1, 1);
257
+ case 2:
258
+ return 2;
259
+ case 3:
260
+ return 3;
261
+ default:
262
+ return 1;
263
+ }
264
+ }, [fileItems]);
265
+ const galleryContent = (0, _react.useMemo)(() => {
266
+ const combinedFilesLength = fileItems.length;
267
+ if (isEditMode) {
268
+ const items = fileItems.map(file => /*#__PURE__*/_react.default.createElement(_GalleryItem.default, {
269
+ key: file.id,
270
+ fileItem: file,
271
+ isEditMode: true,
272
+ onClick: openFiles,
273
+ handleDeleteFile: handleDeleteFile
274
+ }));
275
+ if (maxFiles && maxFiles <= combinedFilesLength) {
276
+ return items;
277
+ }
278
+ items.push(/*#__PURE__*/_react.default.createElement(_AddFile.default, {
279
+ key: "add_file",
280
+ onAdd: handleAddFiles
281
+ }));
282
+ return items;
283
+ }
284
+ const shortedFiles = fileItems.slice(0, 4);
285
+ return shortedFiles.map((file, index) => {
286
+ let imageRatio = 1;
287
+ if (viewMode === _gallery.GalleryViewMode.GRID) {
288
+ if (combinedFilesLength === 2 && (index === 0 || index === 1)) {
289
+ imageRatio = 0.5;
290
+ } else if (index === 0 && combinedFilesLength > 2 || combinedFilesLength === 3 && (index === 1 || index === 2)) {
291
+ imageRatio = 1.5;
292
+ }
293
+ }
294
+ return /*#__PURE__*/_react.default.createElement(_GalleryItem.default, {
295
+ key: file.id,
296
+ fileItem: file,
297
+ isEditMode: false,
298
+ handleDeleteFile: handleDeleteFile,
299
+ onClick: openFiles,
300
+ ratio: imageRatio,
301
+ remainingItemsLength: combinedFilesLength > 4 && index === 3 ? combinedFilesLength : undefined
302
+ });
303
+ });
304
+ }, [fileItems, isEditMode, maxFiles, handleAddFiles, openFiles, handleDeleteFile, viewMode]);
305
+ return (0, _react.useMemo)(() => /*#__PURE__*/_react.default.createElement(_Gallery.StyledGallery, null, isEditMode ? /*#__PURE__*/_react.default.createElement(_Gallery.StyledGalleryEditModeWrapper, {
306
+ $fileMinWidth: fileMinWidth,
307
+ onDragOver: e => e.preventDefault(),
308
+ onDrop: e => void handleDrop(e)
309
+ }, galleryContent) : /*#__PURE__*/_react.default.createElement(_Gallery.StyledGalleryItemWrapper, {
310
+ $ratio: ratio,
311
+ $uploadedFileLength: fileItems.length,
312
+ $viewMode: viewMode
313
+ }, galleryContent)), [isEditMode, fileMinWidth, galleryContent, ratio, fileItems.length, viewMode, handleDrop]);
314
+ };
315
+ Gallery.displayName = 'Gallery';
316
+ var _default = exports.default = Gallery;
317
+ //# sourceMappingURL=Gallery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Gallery.js","names":["_core","require","_chaynsApi","_react","_interopRequireWildcard","_uuid","_gallery","_file","_AddFile","_interopRequireDefault","_GalleryItem","_Gallery","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Gallery","allowDragAndDrop","doubleFileDialogMessage","isEditMode","fileMinWidth","files","maxFiles","onAdd","onFileCountChange","onRemove","viewMode","GalleryViewMode","GRID","fileItems","setFileItems","useState","handlePreviewUrlCallback","previewUrl","file","prevState","map","prevFile","id","callDuplicateFileDialog","useCallback","createDialog","type","DialogType","ALERT","text","handleUploadFileCallback","uploadedFile","updatedState","_prevFile$uploadedFil","url","undefined","prevElement","find","newUploadedFile","state","tmp","forEach","updatedFile","push","useEffect","length","filesToGeneratePreview","filter","filesToUpload","includes","generateVideoThumbnail","callback","generatePreviewUrl","uploadFile","fileToUpload","UploadedFile","handleAddFiles","filesToAdd","newFileItems","filterDuplicateFile","newFile","uuidv4","slice","updatedItems","prevItem","newItem","item","concat","some","handleDeleteFile","fileToDelete","filteredFiles","fileId","handleDrop","preventDefault","draggedFiles","Array","from","dataTransfer","openFiles","startIndex","findIndex","items","_item$uploadedFile","replace","mediaType","MediaType","VIDEO","IMAGE","openMedia","ratio","useMemo","_fileItems$","Math","max","galleryContent","combinedFilesLength","createElement","key","fileItem","onClick","shortedFiles","index","imageRatio","remainingItemsLength","StyledGallery","StyledGalleryEditModeWrapper","$fileMinWidth","onDragOver","onDrop","StyledGalleryItemWrapper","$ratio","$uploadedFileLength","$viewMode","displayName","_default","exports"],"sources":["../../../src/components/Gallery.tsx"],"sourcesContent":["import {\n Image,\n uploadFile,\n Video,\n type FileItem,\n type InternalFileItem,\n} from '@chayns-components/core';\nimport { createDialog, DialogType, MediaType, openMedia, OpenMediaItem } from 'chayns-api';\nimport React, { DragEvent, FC, useCallback, useEffect, useMemo, useState } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\nimport { GalleryViewMode } from '../types/gallery';\nimport { filterDuplicateFile, generatePreviewUrl, generateVideoThumbnail } from '../utils/file';\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 * Whether drag and drop is allowed or not\n */\n allowDragAndDrop?: boolean;\n /**\n * The message that should be displayed if a File is already given.\n */\n doubleFileDialogMessage?: string;\n /**\n * The minimum width of a file in the edit mode\n */\n fileMinWidth?: number;\n /**\n * Images and videos which should be displayed\n */\n files?: FileItem[];\n /**\n * Whether images and videos can be edited\n */\n isEditMode?: boolean;\n /**\n * The maximum amount of images and videos that can be uploaded.\n */\n maxFiles?: number;\n /**\n * Function to be executed when files are added and uploaded\n */\n onAdd?: (file: FileItem) => void;\n /**\n * Function to be executed when the count of files are changed. Needed to check if all files are uploaded\n */\n onFileCountChange?: (fileCount: number) => void;\n /**\n * Function to be executed when a file is removed\n */\n onRemove?: (file: FileItem) => void;\n /**\n * The mode how the images should be displayed.\n */\n viewMode?: GalleryViewMode;\n};\n\nconst Gallery: FC<GalleryProps> = ({\n allowDragAndDrop = false,\n doubleFileDialogMessage = 'Diese Datei ist bereits vorhanden',\n isEditMode = false,\n fileMinWidth = 100,\n files,\n maxFiles,\n onAdd,\n onFileCountChange,\n onRemove,\n viewMode = GalleryViewMode.GRID,\n}) => {\n const [fileItems, setFileItems] = useState<InternalFileItem[]>([]);\n\n /**\n * This function adds a previewUrl to fileItems\n */\n const handlePreviewUrlCallback = (previewUrl: string, file: InternalFileItem) => {\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 const callDuplicateFileDialog = useCallback(() => {\n createDialog({ type: DialogType.ALERT, text: doubleFileDialogMessage });\n }, [doubleFileDialogMessage]);\n\n /**\n * This function adds uploaded files to fileItems\n */\n const handleUploadFileCallback = useCallback(\n (file: InternalFileItem, uploadedFile: Video | Image) => {\n setFileItems((prevState) => {\n const updatedState = prevState.map((prevFile) => {\n if (prevFile.uploadedFile?.url === uploadedFile.url) {\n callDuplicateFileDialog();\n\n return undefined;\n }\n\n if (prevFile.id === file.id) {\n if (typeof onAdd === 'function') {\n const prevElement = prevState.find(\n ({ uploadedFile: newUploadedFile }) =>\n newUploadedFile?.url === uploadedFile?.url,\n );\n\n if (!prevElement) {\n onAdd({\n file: uploadedFile,\n id: file.id,\n });\n }\n }\n\n return {\n ...prevFile,\n uploadedFile,\n state: 'uploaded',\n };\n }\n\n return prevFile;\n });\n\n const tmp: InternalFileItem[] = [];\n\n updatedState.forEach((updatedFile) => {\n if (updatedFile !== undefined) {\n tmp.push(updatedFile as InternalFileItem);\n }\n });\n\n return tmp ?? [];\n });\n },\n [callDuplicateFileDialog, onAdd],\n );\n\n /**\n * Returns the current count to check if all files are uploaded\n */\n useEffect(() => {\n if (typeof onFileCountChange === 'function') {\n onFileCountChange(fileItems.length);\n }\n }, [fileItems.length, onFileCountChange]);\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 if (file.file.type.includes('video/')) {\n generateVideoThumbnail({\n file: file.file,\n callback: (previewUrl) => handlePreviewUrlCallback(previewUrl, file),\n });\n\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 callback: (UploadedFile) => handleUploadFileCallback(file, UploadedFile),\n });\n });\n }, [fileItems, handleUploadFileCallback]);\n\n /**\n * This function formats and adds files to fileItems\n */\n const handleAddFiles = useCallback(\n (filesToAdd: File[]) => {\n const newFileItems: InternalFileItem[] = [];\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 let tmp = newFileItems;\n\n if (maxFiles) {\n tmp = newFileItems.slice(0, maxFiles - (fileItems.length + filesToAdd.length - 1));\n }\n\n setFileItems((prevState) => [...prevState, ...tmp]);\n },\n [fileItems, maxFiles],\n );\n\n /**\n * This function adds external files to fileItems\n */\n useEffect(() => {\n if (files) {\n const newFileItems: InternalFileItem[] = [];\n\n files.forEach((file) => {\n newFileItems.push({\n id: file.id ?? uuidv4(),\n uploadedFile: file.file,\n file: undefined,\n state: 'uploaded',\n previewUrl: undefined,\n });\n });\n\n setFileItems((prevState) => {\n const updatedItems = prevState.map((prevItem) => {\n const newItem = newFileItems.find(\n (item) =>\n item.uploadedFile &&\n item.uploadedFile.url ===\n (prevItem.uploadedFile && prevItem.uploadedFile.url),\n );\n return newItem || prevItem;\n });\n\n return updatedItems.concat(\n newFileItems.filter(\n (newItem) =>\n !prevState.some(\n (prevItem) =>\n prevItem.uploadedFile &&\n newItem.uploadedFile &&\n prevItem.uploadedFile.url === newItem.uploadedFile.url,\n ),\n ),\n );\n });\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 && file.uploadedFile) {\n fileToDelete = { file: file.uploadedFile, id };\n }\n\n return fileId !== id;\n });\n\n setFileItems(filteredFiles);\n\n if (!fileToDelete || typeof onRemove !== 'function') {\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 * Opens the files in a slideShow\n */\n const openFiles = useCallback(\n (file: InternalFileItem) => {\n const startIndex = fileItems.findIndex((item) => item.id === file.id);\n\n const items: OpenMediaItem[] = fileItems.map((item) => ({\n url: item.uploadedFile?.url.replace('_0.mp4', '.mp4') ?? '',\n mediaType:\n item.uploadedFile && 'thumbnailUrl' in item.uploadedFile\n ? MediaType.VIDEO\n : MediaType.IMAGE,\n }));\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n void openMedia({ items, startIndex });\n },\n [fileItems],\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 }, [fileItems]);\n\n const galleryContent = useMemo(() => {\n const combinedFilesLength = fileItems.length;\n\n if (isEditMode) {\n const items = fileItems.map((file) => (\n <GalleryItem\n key={file.id}\n fileItem={file}\n isEditMode\n onClick={openFiles}\n handleDeleteFile={handleDeleteFile}\n />\n ));\n\n if (maxFiles && maxFiles <= combinedFilesLength) {\n return items;\n }\n\n items.push(<AddFile key=\"add_file\" onAdd={handleAddFiles} />);\n\n return items;\n }\n\n const shortedFiles = fileItems.slice(0, 4);\n\n return shortedFiles.map((file, index) => {\n let imageRatio = 1;\n\n if (viewMode === GalleryViewMode.GRID) {\n if (combinedFilesLength === 2 && (index === 0 || index === 1)) {\n imageRatio = 0.5;\n } else if (\n (index === 0 && combinedFilesLength > 2) ||\n (combinedFilesLength === 3 && (index === 1 || index === 2))\n ) {\n imageRatio = 1.5;\n }\n }\n\n return (\n <GalleryItem\n key={file.id}\n fileItem={file}\n isEditMode={false}\n handleDeleteFile={handleDeleteFile}\n onClick={openFiles}\n ratio={imageRatio}\n remainingItemsLength={\n combinedFilesLength > 4 && index === 3 ? combinedFilesLength : undefined\n }\n />\n );\n });\n }, [fileItems, isEditMode, maxFiles, handleAddFiles, openFiles, handleDeleteFile, viewMode]);\n\n return useMemo(\n () => (\n <StyledGallery>\n {isEditMode ? (\n <StyledGalleryEditModeWrapper\n $fileMinWidth={fileMinWidth}\n onDragOver={(e) => e.preventDefault()}\n onDrop={(e) => void handleDrop(e)}\n >\n {galleryContent}\n </StyledGalleryEditModeWrapper>\n ) : (\n <StyledGalleryItemWrapper\n $ratio={ratio}\n $uploadedFileLength={fileItems.length}\n $viewMode={viewMode}\n >\n {galleryContent}\n </StyledGalleryItemWrapper>\n )}\n </StyledGallery>\n ),\n [isEditMode, fileMinWidth, galleryContent, ratio, fileItems.length, viewMode, handleDrop],\n );\n};\n\nGallery.displayName = 'Gallery';\n\nexport default Gallery;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.StyledGalleryItemWrapper = exports.StyledGalleryEditModeWrapper = exports.StyledGallery = void 0;
7
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
8
+ var _gallery = require("../types/gallery");
9
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
10
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
11
+ const StyledGallery = exports.StyledGallery = _styledComponents.default.div``;
12
+ const StyledGalleryItemWrapper = exports.StyledGalleryItemWrapper = _styledComponents.default.div`
13
+ display: grid;
14
+ gap: 5px;
15
+
16
+ ${({
17
+ $viewMode,
18
+ $uploadedFileLength
19
+ }) => {
20
+ if ($viewMode === _gallery.GalleryViewMode.GRID) {
21
+ return (0, _styledComponents.css)`
22
+ > div:first-child {
23
+ grid-column: 1 / -1;
24
+ }
25
+
26
+ ${() => {
27
+ switch ($uploadedFileLength) {
28
+ case 1:
29
+ return (0, _styledComponents.css)`
30
+ grid-template-columns: 1fr;
31
+ `;
32
+ case 2:
33
+ return (0, _styledComponents.css)`
34
+ grid-template-columns: repeat(2, 1fr);
35
+ > div:first-child {
36
+ grid-column: span 1;
37
+ }
38
+ `;
39
+ case 3:
40
+ return (0, _styledComponents.css)`
41
+ grid-template-columns: repeat(2, 1fr);
42
+ > div:first-child {
43
+ grid-column: span 2;
44
+ }
45
+ `;
46
+ default:
47
+ return (0, _styledComponents.css)`
48
+ grid-template-columns: repeat(3, minmax(0, 1fr));
49
+ > div:not(:first-child) {
50
+ grid-column: span 1;
51
+ }
52
+ `;
53
+ }
54
+ }}
55
+ `;
56
+ }
57
+ switch ($uploadedFileLength) {
58
+ case 1:
59
+ return (0, _styledComponents.css)`
60
+ grid-template-columns: 1fr;
61
+ `;
62
+ case 2:
63
+ return (0, _styledComponents.css)`
64
+ grid-template-columns: repeat(2, 1fr);
65
+ `;
66
+ case 3:
67
+ return (0, _styledComponents.css)`
68
+ grid-template-columns: repeat(3, 1fr);
69
+ `;
70
+ default:
71
+ return (0, _styledComponents.css)`
72
+ grid-template-columns: repeat(2, 1fr);
73
+ > div:nth-child(-n + 2) {
74
+ grid-row: 1;
75
+ }
76
+ `;
77
+ }
78
+ }}
79
+
80
+ aspect-ratio: ${({
81
+ $ratio
82
+ }) => $ratio};
83
+ `;
84
+ const StyledGalleryEditModeWrapper = exports.StyledGalleryEditModeWrapper = _styledComponents.default.div`
85
+ display: grid;
86
+ grid-template-columns: ${({
87
+ $fileMinWidth
88
+ }) => `repeat(auto-fill, minmax(${$fileMinWidth}px, 1fr))`};
89
+ grid-auto-rows: 1fr;
90
+ gap: 6px;
91
+ `;
92
+ //# sourceMappingURL=Gallery.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Gallery.styles.js","names":["_styledComponents","_interopRequireWildcard","require","_gallery","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","StyledGallery","exports","styled","div","StyledGalleryItemWrapper","$viewMode","$uploadedFileLength","GalleryViewMode","GRID","css","$ratio","StyledGalleryEditModeWrapper","$fileMinWidth"],"sources":["../../../src/components/Gallery.styles.ts"],"sourcesContent":["import styled, { css } from 'styled-components';\nimport { GalleryViewMode } from '../types/gallery';\n\nexport const StyledGallery = styled.div``;\n\nexport const StyledGalleryItemWrapper = styled.div<{\n $uploadedFileLength: number;\n $ratio: number;\n $viewMode: GalleryViewMode;\n}>`\n display: grid;\n gap: 5px;\n\n ${({ $viewMode, $uploadedFileLength }) => {\n if ($viewMode === GalleryViewMode.GRID) {\n return css`\n > div:first-child {\n grid-column: 1 / -1;\n }\n\n ${() => {\n switch ($uploadedFileLength) {\n case 1:\n return css`\n grid-template-columns: 1fr;\n `;\n case 2:\n return css`\n grid-template-columns: repeat(2, 1fr);\n > div:first-child {\n grid-column: span 1;\n }\n `;\n case 3:\n return css`\n grid-template-columns: repeat(2, 1fr);\n > div:first-child {\n grid-column: span 2;\n }\n `;\n default:\n return css`\n grid-template-columns: repeat(3, minmax(0, 1fr));\n > div:not(:first-child) {\n grid-column: span 1;\n }\n `;\n }\n }}\n `;\n }\n\n switch ($uploadedFileLength) {\n case 1:\n return css`\n grid-template-columns: 1fr;\n `;\n case 2:\n return css`\n grid-template-columns: repeat(2, 1fr);\n `;\n case 3:\n return css`\n grid-template-columns: repeat(3, 1fr);\n `;\n default:\n return css`\n grid-template-columns: repeat(2, 1fr);\n > div:nth-child(-n + 2) {\n grid-row: 1;\n }\n `;\n }\n }}\n\n aspect-ratio: ${({ $ratio }) => $ratio};\n`;\n\nexport const StyledGalleryEditModeWrapper = styled.div<{\n $fileMinWidth: number;\n}>`\n display: grid;\n grid-template-columns: ${({ $fileMinWidth }) =>\n `repeat(auto-fill, minmax(${$fileMinWidth}px, 1fr))`};\n grid-auto-rows: 1fr;\n gap: 6px;\n`;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _core = require("@chayns-components/core");
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _AddFile = require("./AddFile.styles");
10
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
11
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
12
+ const AddFile = ({
13
+ onAdd
14
+ }) => {
15
+ const openSelectDialog = (0, _react.useCallback)(async () => {
16
+ const files = await (0, _core.selectFiles)({
17
+ multiple: true,
18
+ type: 'image/*, video/*'
19
+ });
20
+ onAdd(files);
21
+ }, [onAdd]);
22
+ return /*#__PURE__*/_react.default.createElement(_AddFile.StyledAddFile, {
23
+ key: "addButton"
24
+ }, /*#__PURE__*/_react.default.createElement(_AddFile.StyledAddFIleIconWrapper, {
25
+ onClick: () => void openSelectDialog()
26
+ }, /*#__PURE__*/_react.default.createElement(_core.Icon, {
27
+ size: 40,
28
+ icons: ['fa fa-plus']
29
+ })));
30
+ };
31
+ AddFile.displayName = 'AddFile';
32
+ var _default = exports.default = AddFile;
33
+ //# sourceMappingURL=AddFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AddFile.js","names":["_core","require","_react","_interopRequireWildcard","_AddFile","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","AddFile","onAdd","openSelectDialog","useCallback","files","selectFiles","multiple","type","createElement","StyledAddFile","key","StyledAddFIleIconWrapper","onClick","Icon","size","icons","displayName","_default","exports"],"sources":["../../../../src/components/add-file/AddFile.tsx"],"sourcesContent":["import { Icon, selectFiles } from '@chayns-components/core';\nimport React, { FC, useCallback } from 'react';\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,QAAA,GAAAH,OAAA;AAA2E,SAAAI,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAS3E,MAAMW,OAAyB,GAAGA,CAAC;EAAEC;AAAM,CAAC,KAAK;EAC7C,MAAMC,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,oBACIxB,MAAA,CAAAS,OAAA,CAAAsB,aAAA,CAAC7B,QAAA,CAAA8B,aAAa;IAACC,GAAG,EAAC;EAAW,gBAC1BjC,MAAA,CAAAS,OAAA,CAAAsB,aAAA,CAAC7B,QAAA,CAAAgC,wBAAwB;IAACC,OAAO,EAAEA,CAAA,KAAM,KAAKV,gBAAgB,CAAC;EAAE,gBAC7DzB,MAAA,CAAAS,OAAA,CAAAsB,aAAA,CAACjC,KAAA,CAAAsC,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,GAAAC,OAAA,CAAAhC,OAAA,GAEjBc,OAAO","ignoreList":[]}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.StyledAddFile = exports.StyledAddFIleIconWrapper = void 0;
7
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ const StyledAddFile = exports.StyledAddFile = _styledComponents.default.div`
10
+ position: relative;
11
+ `;
12
+ const StyledAddFIleIconWrapper = exports.StyledAddFIleIconWrapper = _styledComponents.default.button`
13
+ background-color: ${({
14
+ theme
15
+ }) => theme['101']};
16
+ box-shadow: 0 0 0 1px
17
+ rgba(${({
18
+ theme
19
+ }) => theme['009-rgb']}, 0.08) inset;
20
+ width: 100%;
21
+ aspect-ratio: 1 / 1;
22
+ `;
23
+ //# sourceMappingURL=AddFile.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AddFile.styles.js","names":["_styledComponents","_interopRequireDefault","require","e","__esModule","default","StyledAddFile","exports","styled","div","StyledAddFIleIconWrapper","button","theme"],"sources":["../../../../src/components/add-file/AddFile.styles.ts"],"sourcesContent":["import type { WithTheme } from '@chayns-components/core';\nimport styled from 'styled-components';\n\nexport const StyledAddFile = styled.div`\n position: relative;\n`;\n\ntype StyledAddFIleIconWrapperProps = WithTheme<unknown>;\n\nexport const StyledAddFIleIconWrapper = styled.button<StyledAddFIleIconWrapperProps>`\n background-color: ${({ theme }: StyledAddFIleIconWrapperProps) => theme['101']};\n box-shadow: 0 0 0 1px\n rgba(${({ theme }: StyledAddFIleIconWrapperProps) => theme['009-rgb']}, 0.08) inset;\n width: 100%;\n aspect-ratio: 1 / 1;\n`;\n"],"mappings":";;;;;;AACA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAuC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEhC,MAAMG,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAGE,yBAAM,CAACC,GAAG;AACvC;AACA,CAAC;AAIM,MAAMC,wBAAwB,GAAAH,OAAA,CAAAG,wBAAA,GAAGF,yBAAM,CAACG,MAAqC;AACpF,wBAAwB,CAAC;EAAEC;AAAqC,CAAC,KAAKA,KAAK,CAAC,KAAK,CAAC;AAClF;AACA,eAAe,CAAC;EAAEA;AAAqC,CAAC,KAAKA,KAAK,CAAC,SAAS,CAAC;AAC7E;AACA;AACA,CAAC","ignoreList":[]}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _core = require("@chayns-components/core");
8
+ var _framerMotion = require("framer-motion");
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _GalleryItem = require("./GalleryItem.styles");
11
+ var _MediaItem = _interopRequireDefault(require("./media-item/MediaItem"));
12
+ var _PreviewItem = _interopRequireDefault(require("./preview-item/PreviewItem"));
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
15
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
+ const GalleryItem = ({
17
+ fileItem,
18
+ handleDeleteFile,
19
+ isEditMode,
20
+ ratio = 1,
21
+ remainingItemsLength,
22
+ onClick
23
+ }) => (0, _react.useMemo)(() => /*#__PURE__*/_react.default.createElement(_GalleryItem.StyledGalleryItem, null, isEditMode && /*#__PURE__*/_react.default.createElement(_GalleryItem.StyledGalleryItemDeleteButton, {
24
+ onClick: () => handleDeleteFile(fileItem.id)
25
+ }, /*#__PURE__*/_react.default.createElement(_core.Icon, {
26
+ size: 20,
27
+ icons: ['ts-wrong']
28
+ })), !fileItem.state || fileItem.state === 'none' || !fileItem.previewUrl && !fileItem.uploadedFile ? null : /*#__PURE__*/_react.default.createElement(_framerMotion.AnimatePresence, {
29
+ initial: false
30
+ }, fileItem.state === 'uploading' ? /*#__PURE__*/_react.default.createElement(_PreviewItem.default, {
31
+ ratio: ratio,
32
+ key: `uploading_${fileItem.id ?? ''}`,
33
+ fileItem: fileItem
34
+ }) : /*#__PURE__*/_react.default.createElement(_MediaItem.default, {
35
+ key: `uploaded_${fileItem.id ?? ''}`,
36
+ fileItem: fileItem,
37
+ isEditMode: isEditMode,
38
+ ratio: ratio,
39
+ openSelectedFile: onClick
40
+ })), remainingItemsLength && /*#__PURE__*/_react.default.createElement(_GalleryItem.StyledGalleryItemMoreItemsIndicator, null, /*#__PURE__*/_react.default.createElement("p", null, `+ ${remainingItemsLength - 3}`))), [fileItem, handleDeleteFile, isEditMode, onClick, ratio, remainingItemsLength]);
41
+ GalleryItem.displayName = 'GalleryItem';
42
+ var _default = exports.default = GalleryItem;
43
+ //# sourceMappingURL=GalleryItem.js.map