@chayns-components/gallery 5.0.53 → 5.0.56

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 (184) hide show
  1. package/AGENTS.md +135 -72
  2. package/lib/cjs/components/Gallery.js +16 -329
  3. package/lib/cjs/components/Gallery.js.map +1 -1
  4. package/lib/cjs/components/Gallery.types.js +6 -0
  5. package/lib/cjs/components/Gallery.types.js.map +1 -0
  6. package/lib/cjs/components/gallery-editor/GalleryEditor.js +198 -0
  7. package/lib/cjs/components/gallery-editor/GalleryEditor.js.map +1 -0
  8. package/lib/cjs/components/gallery-editor/GalleryEditor.styles.js +20 -0
  9. package/lib/cjs/components/gallery-editor/GalleryEditor.styles.js.map +1 -0
  10. package/lib/cjs/components/gallery-editor/GalleryEditor.types.js +6 -0
  11. package/lib/cjs/components/gallery-editor/GalleryEditor.types.js.map +1 -0
  12. package/lib/cjs/components/gallery-editor/add-file/AddFile.js.map +1 -0
  13. package/lib/cjs/components/gallery-editor/add-file/AddFile.styles.js.map +1 -0
  14. package/lib/cjs/components/gallery-editor/add-file/AddFile.types.js +6 -0
  15. package/lib/cjs/components/gallery-editor/add-file/AddFile.types.js.map +1 -0
  16. package/lib/cjs/components/gallery-editor/gallery-editor-item/GalleryEditorItem.js +41 -0
  17. package/lib/cjs/components/gallery-editor/gallery-editor-item/GalleryEditorItem.js.map +1 -0
  18. package/lib/cjs/components/gallery-editor/gallery-editor-item/GalleryEditorItem.styles.js +37 -0
  19. package/lib/cjs/components/gallery-editor/gallery-editor-item/GalleryEditorItem.styles.js.map +1 -0
  20. package/lib/cjs/components/gallery-editor/gallery-editor-item/GalleryEditorItem.types.js +6 -0
  21. package/lib/cjs/components/gallery-editor/gallery-editor-item/GalleryEditorItem.types.js.map +1 -0
  22. package/lib/cjs/components/gallery-editor/gallery-editor-item/gallery-editor-media-item/GalleryEditorMediaItem.js +36 -0
  23. package/lib/cjs/components/gallery-editor/gallery-editor-item/gallery-editor-media-item/GalleryEditorMediaItem.js.map +1 -0
  24. package/lib/cjs/components/gallery-editor/gallery-editor-item/gallery-editor-media-item/GalleryEditorMediaItem.styles.js +15 -0
  25. package/lib/cjs/components/gallery-editor/gallery-editor-item/gallery-editor-media-item/GalleryEditorMediaItem.styles.js.map +1 -0
  26. package/lib/cjs/components/gallery-editor/gallery-editor-item/gallery-editor-media-item/GalleryEditorMediaItem.types.js +6 -0
  27. package/lib/cjs/components/gallery-editor/gallery-editor-item/gallery-editor-media-item/GalleryEditorMediaItem.types.js.map +1 -0
  28. package/lib/cjs/components/gallery-editor/gallery-editor-item/gallery-editor-preview-item/GalleryEditorPreviewItem.js +45 -0
  29. package/lib/cjs/components/gallery-editor/gallery-editor-item/gallery-editor-preview-item/GalleryEditorPreviewItem.js.map +1 -0
  30. package/lib/cjs/components/gallery-editor/gallery-editor-item/gallery-editor-preview-item/GalleryEditorPreviewItem.styles.js +44 -0
  31. package/lib/cjs/components/gallery-editor/gallery-editor-item/gallery-editor-preview-item/GalleryEditorPreviewItem.styles.js.map +1 -0
  32. package/lib/cjs/components/gallery-editor/gallery-editor-item/gallery-editor-preview-item/GalleryEditorPreviewItem.types.js +6 -0
  33. package/lib/cjs/components/gallery-editor/gallery-editor-item/gallery-editor-preview-item/GalleryEditorPreviewItem.types.js.map +1 -0
  34. package/lib/cjs/components/gallery-viewer/GalleryViewer.js +42 -0
  35. package/lib/cjs/components/gallery-viewer/GalleryViewer.js.map +1 -0
  36. package/lib/cjs/components/{Gallery.styles.js → gallery-viewer/GalleryViewer.styles.js} +13 -18
  37. package/lib/cjs/components/gallery-viewer/GalleryViewer.styles.js.map +1 -0
  38. package/lib/cjs/components/gallery-viewer/GalleryViewer.types.js +6 -0
  39. package/lib/cjs/components/gallery-viewer/GalleryViewer.types.js.map +1 -0
  40. package/lib/cjs/components/gallery-viewer/gallery-viewer-item/GalleryViewerItem.js +25 -0
  41. package/lib/cjs/components/gallery-viewer/gallery-viewer-item/GalleryViewerItem.js.map +1 -0
  42. package/lib/cjs/components/gallery-viewer/gallery-viewer-item/GalleryViewerItem.styles.js +30 -0
  43. package/lib/cjs/components/gallery-viewer/gallery-viewer-item/GalleryViewerItem.styles.js.map +1 -0
  44. package/lib/cjs/components/gallery-viewer/gallery-viewer-item/GalleryViewerItem.types.js +6 -0
  45. package/lib/cjs/components/gallery-viewer/gallery-viewer-item/GalleryViewerItem.types.js.map +1 -0
  46. package/lib/cjs/components/media-content/MediaContent.js +36 -0
  47. package/lib/cjs/components/media-content/MediaContent.js.map +1 -0
  48. package/lib/cjs/components/media-content/MediaContent.styles.js +56 -0
  49. package/lib/cjs/components/media-content/MediaContent.styles.js.map +1 -0
  50. package/lib/cjs/components/media-content/MediaContent.types.js +6 -0
  51. package/lib/cjs/components/media-content/MediaContent.types.js.map +1 -0
  52. package/lib/cjs/index.js +14 -0
  53. package/lib/cjs/index.js.map +1 -1
  54. package/lib/cjs/types/gallery.js +9 -0
  55. package/lib/cjs/types/gallery.js.map +1 -1
  56. package/lib/cjs/utils/gallery.js +152 -0
  57. package/lib/cjs/utils/gallery.js.map +1 -0
  58. package/lib/esm/components/Gallery.js +16 -319
  59. package/lib/esm/components/Gallery.js.map +1 -1
  60. package/lib/esm/components/Gallery.types.js +2 -0
  61. package/lib/esm/components/Gallery.types.js.map +1 -0
  62. package/lib/esm/components/gallery-editor/GalleryEditor.js +189 -0
  63. package/lib/esm/components/gallery-editor/GalleryEditor.js.map +1 -0
  64. package/lib/esm/components/gallery-editor/GalleryEditor.styles.js +13 -0
  65. package/lib/esm/components/gallery-editor/GalleryEditor.styles.js.map +1 -0
  66. package/lib/esm/components/gallery-editor/GalleryEditor.types.js +2 -0
  67. package/lib/esm/components/gallery-editor/GalleryEditor.types.js.map +1 -0
  68. package/lib/esm/components/gallery-editor/add-file/AddFile.js.map +1 -0
  69. package/lib/esm/components/gallery-editor/add-file/AddFile.styles.js.map +1 -0
  70. package/lib/esm/components/gallery-editor/add-file/AddFile.types.js +2 -0
  71. package/lib/esm/components/gallery-editor/add-file/AddFile.types.js.map +1 -0
  72. package/lib/esm/components/gallery-editor/gallery-editor-item/GalleryEditorItem.js +34 -0
  73. package/lib/esm/components/gallery-editor/gallery-editor-item/GalleryEditorItem.js.map +1 -0
  74. package/lib/esm/components/gallery-editor/gallery-editor-item/GalleryEditorItem.styles.js +30 -0
  75. package/lib/esm/components/gallery-editor/gallery-editor-item/GalleryEditorItem.styles.js.map +1 -0
  76. package/lib/esm/components/gallery-editor/gallery-editor-item/GalleryEditorItem.types.js +2 -0
  77. package/lib/esm/components/gallery-editor/gallery-editor-item/GalleryEditorItem.types.js.map +1 -0
  78. package/lib/esm/components/gallery-editor/gallery-editor-item/gallery-editor-media-item/GalleryEditorMediaItem.js +29 -0
  79. package/lib/esm/components/gallery-editor/gallery-editor-item/gallery-editor-media-item/GalleryEditorMediaItem.js.map +1 -0
  80. package/lib/esm/components/gallery-editor/gallery-editor-item/gallery-editor-media-item/GalleryEditorMediaItem.styles.js +8 -0
  81. package/lib/esm/components/gallery-editor/gallery-editor-item/gallery-editor-media-item/GalleryEditorMediaItem.styles.js.map +1 -0
  82. package/lib/esm/components/gallery-editor/gallery-editor-item/gallery-editor-media-item/GalleryEditorMediaItem.types.js +2 -0
  83. package/lib/esm/components/gallery-editor/gallery-editor-item/gallery-editor-media-item/GalleryEditorMediaItem.types.js.map +1 -0
  84. package/lib/esm/components/gallery-editor/gallery-editor-item/gallery-editor-preview-item/GalleryEditorPreviewItem.js +38 -0
  85. package/lib/esm/components/gallery-editor/gallery-editor-item/gallery-editor-preview-item/GalleryEditorPreviewItem.js.map +1 -0
  86. package/lib/esm/components/{gallery-item/preview-item/PreviewItem.styles.js → gallery-editor/gallery-editor-item/gallery-editor-preview-item/GalleryEditorPreviewItem.styles.js} +7 -6
  87. package/lib/esm/components/gallery-editor/gallery-editor-item/gallery-editor-preview-item/GalleryEditorPreviewItem.styles.js.map +1 -0
  88. package/lib/esm/components/gallery-editor/gallery-editor-item/gallery-editor-preview-item/GalleryEditorPreviewItem.types.js +2 -0
  89. package/lib/esm/components/gallery-editor/gallery-editor-item/gallery-editor-preview-item/GalleryEditorPreviewItem.types.js.map +1 -0
  90. package/lib/esm/components/gallery-viewer/GalleryViewer.js +34 -0
  91. package/lib/esm/components/gallery-viewer/GalleryViewer.js.map +1 -0
  92. package/lib/esm/components/{Gallery.styles.js → gallery-viewer/GalleryViewer.styles.js} +12 -17
  93. package/lib/esm/components/gallery-viewer/GalleryViewer.styles.js.map +1 -0
  94. package/lib/esm/components/gallery-viewer/GalleryViewer.types.js +2 -0
  95. package/lib/esm/components/gallery-viewer/GalleryViewer.types.js.map +1 -0
  96. package/lib/esm/components/gallery-viewer/gallery-viewer-item/GalleryViewerItem.js +18 -0
  97. package/lib/esm/components/gallery-viewer/gallery-viewer-item/GalleryViewerItem.js.map +1 -0
  98. package/lib/esm/components/gallery-viewer/gallery-viewer-item/GalleryViewerItem.styles.js +23 -0
  99. package/lib/esm/components/gallery-viewer/gallery-viewer-item/GalleryViewerItem.styles.js.map +1 -0
  100. package/lib/esm/components/gallery-viewer/gallery-viewer-item/GalleryViewerItem.types.js +2 -0
  101. package/lib/esm/components/gallery-viewer/gallery-viewer-item/GalleryViewerItem.types.js.map +1 -0
  102. package/lib/esm/components/media-content/MediaContent.js +29 -0
  103. package/lib/esm/components/media-content/MediaContent.js.map +1 -0
  104. package/lib/esm/components/media-content/MediaContent.styles.js +49 -0
  105. package/lib/esm/components/media-content/MediaContent.styles.js.map +1 -0
  106. package/lib/esm/components/media-content/MediaContent.types.js +2 -0
  107. package/lib/esm/components/media-content/MediaContent.types.js.map +1 -0
  108. package/lib/esm/index.js +2 -0
  109. package/lib/esm/index.js.map +1 -1
  110. package/lib/esm/types/gallery.js +9 -0
  111. package/lib/esm/types/gallery.js.map +1 -1
  112. package/lib/esm/utils/gallery.js +132 -0
  113. package/lib/esm/utils/gallery.js.map +1 -0
  114. package/lib/types/components/Gallery.d.ts +1 -44
  115. package/lib/types/components/Gallery.types.d.ts +107 -0
  116. package/lib/types/components/gallery-editor/GalleryEditor.d.ts +4 -0
  117. package/lib/types/components/gallery-editor/GalleryEditor.styles.d.ts +4 -0
  118. package/lib/types/components/gallery-editor/GalleryEditor.types.d.ts +81 -0
  119. package/lib/types/components/gallery-editor/add-file/AddFile.d.ts +4 -0
  120. package/lib/types/components/gallery-editor/add-file/AddFile.types.d.ts +13 -0
  121. package/lib/types/components/gallery-editor/gallery-editor-item/GalleryEditorItem.d.ts +4 -0
  122. package/lib/types/components/gallery-editor/gallery-editor-item/GalleryEditorItem.styles.d.ts +4 -0
  123. package/lib/types/components/gallery-editor/gallery-editor-item/GalleryEditorItem.types.d.ts +40 -0
  124. package/lib/types/components/gallery-editor/gallery-editor-item/gallery-editor-media-item/GalleryEditorMediaItem.d.ts +4 -0
  125. package/lib/types/components/gallery-editor/gallery-editor-item/gallery-editor-media-item/GalleryEditorMediaItem.styles.d.ts +3 -0
  126. package/lib/types/components/gallery-editor/gallery-editor-item/gallery-editor-media-item/GalleryEditorMediaItem.types.d.ts +30 -0
  127. package/lib/types/components/gallery-editor/gallery-editor-item/gallery-editor-preview-item/GalleryEditorPreviewItem.d.ts +4 -0
  128. package/lib/types/components/gallery-editor/gallery-editor-item/gallery-editor-preview-item/GalleryEditorPreviewItem.styles.d.ts +10 -0
  129. package/lib/types/components/gallery-editor/gallery-editor-item/gallery-editor-preview-item/GalleryEditorPreviewItem.types.d.ts +22 -0
  130. package/lib/types/components/gallery-viewer/GalleryViewer.d.ts +4 -0
  131. package/lib/types/components/gallery-viewer/GalleryViewer.styles.d.ts +7 -0
  132. package/lib/types/components/gallery-viewer/GalleryViewer.types.d.ts +26 -0
  133. package/lib/types/components/gallery-viewer/gallery-viewer-item/GalleryViewerItem.d.ts +4 -0
  134. package/lib/types/components/gallery-viewer/gallery-viewer-item/GalleryViewerItem.styles.d.ts +2 -0
  135. package/lib/types/components/gallery-viewer/gallery-viewer-item/GalleryViewerItem.types.d.ts +41 -0
  136. package/lib/types/components/media-content/MediaContent.d.ts +4 -0
  137. package/lib/types/components/media-content/MediaContent.styles.d.ts +13 -0
  138. package/lib/types/components/media-content/MediaContent.types.d.ts +40 -0
  139. package/lib/types/index.d.ts +5 -0
  140. package/lib/types/types/gallery.d.ts +9 -0
  141. package/lib/types/utils/gallery.d.ts +12 -0
  142. package/package.json +3 -3
  143. package/lib/cjs/components/Gallery.styles.js.map +0 -1
  144. package/lib/cjs/components/add-file/AddFile.js.map +0 -1
  145. package/lib/cjs/components/add-file/AddFile.styles.js.map +0 -1
  146. package/lib/cjs/components/gallery-item/GalleryItem.js +0 -44
  147. package/lib/cjs/components/gallery-item/GalleryItem.js.map +0 -1
  148. package/lib/cjs/components/gallery-item/GalleryItem.styles.js +0 -51
  149. package/lib/cjs/components/gallery-item/GalleryItem.styles.js.map +0 -1
  150. package/lib/cjs/components/gallery-item/media-item/MediaItem.js +0 -52
  151. package/lib/cjs/components/gallery-item/media-item/MediaItem.js.map +0 -1
  152. package/lib/cjs/components/gallery-item/media-item/MediaItem.styles.js +0 -62
  153. package/lib/cjs/components/gallery-item/media-item/MediaItem.styles.js.map +0 -1
  154. package/lib/cjs/components/gallery-item/preview-item/PreviewItem.js +0 -45
  155. package/lib/cjs/components/gallery-item/preview-item/PreviewItem.js.map +0 -1
  156. package/lib/cjs/components/gallery-item/preview-item/PreviewItem.styles.js +0 -43
  157. package/lib/cjs/components/gallery-item/preview-item/PreviewItem.styles.js.map +0 -1
  158. package/lib/esm/components/Gallery.styles.js.map +0 -1
  159. package/lib/esm/components/add-file/AddFile.js.map +0 -1
  160. package/lib/esm/components/add-file/AddFile.styles.js.map +0 -1
  161. package/lib/esm/components/gallery-item/GalleryItem.js +0 -36
  162. package/lib/esm/components/gallery-item/GalleryItem.js.map +0 -1
  163. package/lib/esm/components/gallery-item/GalleryItem.styles.js +0 -44
  164. package/lib/esm/components/gallery-item/GalleryItem.styles.js.map +0 -1
  165. package/lib/esm/components/gallery-item/media-item/MediaItem.js +0 -42
  166. package/lib/esm/components/gallery-item/media-item/MediaItem.js.map +0 -1
  167. package/lib/esm/components/gallery-item/media-item/MediaItem.styles.js +0 -55
  168. package/lib/esm/components/gallery-item/media-item/MediaItem.styles.js.map +0 -1
  169. package/lib/esm/components/gallery-item/preview-item/PreviewItem.js +0 -38
  170. package/lib/esm/components/gallery-item/preview-item/PreviewItem.js.map +0 -1
  171. package/lib/esm/components/gallery-item/preview-item/PreviewItem.styles.js.map +0 -1
  172. package/lib/types/components/Gallery.styles.d.ts +0 -10
  173. package/lib/types/components/add-file/AddFile.d.ts +0 -9
  174. package/lib/types/components/gallery-item/GalleryItem.d.ts +0 -30
  175. package/lib/types/components/gallery-item/GalleryItem.styles.d.ts +0 -5
  176. package/lib/types/components/gallery-item/media-item/MediaItem.d.ts +0 -22
  177. package/lib/types/components/gallery-item/media-item/MediaItem.styles.d.ts +0 -16
  178. package/lib/types/components/gallery-item/preview-item/PreviewItem.d.ts +0 -14
  179. package/lib/types/components/gallery-item/preview-item/PreviewItem.styles.d.ts +0 -10
  180. /package/lib/cjs/components/{add-file → gallery-editor/add-file}/AddFile.js +0 -0
  181. /package/lib/cjs/components/{add-file → gallery-editor/add-file}/AddFile.styles.js +0 -0
  182. /package/lib/esm/components/{add-file → gallery-editor/add-file}/AddFile.js +0 -0
  183. /package/lib/esm/components/{add-file → gallery-editor/add-file}/AddFile.styles.js +0 -0
  184. /package/lib/types/components/{add-file → gallery-editor/add-file}/AddFile.styles.d.ts +0 -0
package/AGENTS.md CHANGED
@@ -1,45 +1,29 @@
1
1
  # @chayns-components/gallery
2
2
 
3
- React component package providing `Gallery` for chayns applications.
3
+ React component package providing 3 documented components for chayns applications.
4
4
 
5
- Documented components: `Gallery`.
5
+ Documented components: `Gallery`, `GalleryEditor`, `GalleryViewer`.
6
6
 
7
7
  ## Import
8
8
 
9
9
  ```ts
10
- import { Gallery } from '@chayns-components/gallery';
10
+ import { Gallery, GalleryEditor, GalleryViewer } from '@chayns-components/gallery';
11
11
  ```
12
12
 
13
13
  ## Typical Usage
14
14
 
15
15
  ```tsx
16
16
  <Gallery
17
- files={[
18
- {
19
- id: 'first-image',
20
- file: {
21
- id: '1',
22
- url: 'https://tsimg.cloud/77896-21884/8aee1a304297729a4542b97325940a656a3da8f2.png',
23
- },
24
- },
25
- {
26
- id: 'second-image',
27
- file: {
28
- id: '2',
29
- url: 'https://tsimg.cloud/77896-21884/54a117f35e5fb57520e64471461af5491c0eff06.png',
30
- },
31
- },
32
- {
33
- id: 'third-image',
34
- file: {
35
- id: '3',
36
- url: 'https://tsimg.cloud/77896-21884/25399416f38c1d960f521a3530c8a2bc70a88bb9.png',
37
- },
38
- },
39
- ]}
17
+ files={galleryStoryFiles}
40
18
  />
41
19
  ```
42
20
 
21
+ ## Components
22
+
23
+ - `Gallery`
24
+ - `GalleryEditor`
25
+ - `GalleryViewer`
26
+
43
27
  ## Gallery
44
28
 
45
29
  `Gallery` is exported by `@chayns-components/gallery` and should be imported from the public package entry point.
@@ -56,29 +40,7 @@ import { Gallery } from '@chayns-components/gallery';
56
40
 
57
41
  ```tsx
58
42
  <Gallery
59
- files={[
60
- {
61
- id: 'first-image',
62
- file: {
63
- id: '1',
64
- url: 'https://tsimg.cloud/77896-21884/8aee1a304297729a4542b97325940a656a3da8f2.png',
65
- },
66
- },
67
- {
68
- id: 'second-image',
69
- file: {
70
- id: '2',
71
- url: 'https://tsimg.cloud/77896-21884/54a117f35e5fb57520e64471461af5491c0eff06.png',
72
- },
73
- },
74
- {
75
- id: 'third-image',
76
- file: {
77
- id: '3',
78
- url: 'https://tsimg.cloud/77896-21884/25399416f38c1d960f521a3530c8a2bc70a88bb9.png',
79
- },
80
- },
81
- ]}
43
+ files={galleryStoryFiles}
82
44
  />
83
45
  ```
84
46
 
@@ -86,30 +48,18 @@ import { Gallery } from '@chayns-components/gallery';
86
48
 
87
49
  ```tsx
88
50
  <Gallery
89
- files={[
90
- {
91
- id: 'first-image',
92
- file: {
93
- id: '1',
94
- url: 'https://tsimg.cloud/77896-21884/8aee1a304297729a4542b97325940a656a3da8f2.png',
95
- },
96
- },
97
- {
98
- id: 'second-image',
99
- file: {
100
- id: '2',
101
- url: 'https://tsimg.cloud/77896-21884/54a117f35e5fb57520e64471461af5491c0eff06.png',
102
- },
103
- },
104
- {
105
- id: 'third-image',
106
- file: {
107
- id: '3',
108
- url: 'https://tsimg.cloud/77896-21884/25399416f38c1d960f521a3530c8a2bc70a88bb9.png',
109
- },
110
- },
111
- ]}
51
+ files={galleryStoryFiles.slice(0, 3)}
112
52
  isEditMode
53
+ maxFiles={6}
54
+ />
55
+ ```
56
+
57
+ #### Wrapper Read Only Square
58
+
59
+ ```tsx
60
+ <Gallery
61
+ files={galleryViewerSquareFiles}
62
+ viewMode={GalleryViewMode.SQUARE}
113
63
  />
114
64
  ```
115
65
 
@@ -129,3 +79,116 @@ No additional exported types documented.
129
79
  ### Anti Patterns
130
80
 
131
81
  - Avoid imports from internal paths such as `@chayns-components/gallery/src/...`; always use the public package export.
82
+ ## GalleryEditor
83
+
84
+ `GalleryEditor` is exported by `@chayns-components/gallery` and should be imported from the public package entry point.
85
+
86
+ ### Import
87
+
88
+ ```ts
89
+ import { GalleryEditor } from '@chayns-components/gallery';
90
+ ```
91
+
92
+ ### Examples
93
+
94
+ #### General
95
+
96
+ ```tsx
97
+ <GalleryEditor
98
+ allowDragAndDrop={false}
99
+ fileMinWidth={100}
100
+ files={galleryStoryFiles.slice(0, 3)}
101
+ maxFiles={6}
102
+ />
103
+ ```
104
+
105
+ #### Reached Max Files
106
+
107
+ ```tsx
108
+ <GalleryEditor
109
+ allowDragAndDrop={false}
110
+ fileMinWidth={100}
111
+ files={galleryStoryFiles.slice(0, 4)}
112
+ maxFiles={4}
113
+ />
114
+ ```
115
+
116
+ ### Props
117
+
118
+ No prop documentation available.
119
+
120
+ ### Types
121
+
122
+ No additional exported types documented.
123
+
124
+ ### Usage Notes
125
+
126
+ - Import `GalleryEditor` directly from `@chayns-components/gallery` instead of internal source paths.
127
+ - Start with one of the documented Storybook examples and adapt the props incrementally for your use case.
128
+
129
+ ### Anti Patterns
130
+
131
+ - Avoid imports from internal paths such as `@chayns-components/gallery/src/...`; always use the public package export.
132
+ ## GalleryViewer
133
+
134
+ `GalleryViewer` is exported by `@chayns-components/gallery` and should be imported from the public package entry point.
135
+
136
+ ### Import
137
+
138
+ ```ts
139
+ import { GalleryViewer } from '@chayns-components/gallery';
140
+ ```
141
+
142
+ ### Examples
143
+
144
+ #### General
145
+
146
+ ```tsx
147
+ <GalleryViewer
148
+ files={galleryStoryFiles}
149
+ viewMode={GalleryViewMode.GRID}
150
+ />
151
+ ```
152
+
153
+ #### Square Mode
154
+
155
+ ```tsx
156
+ <GalleryViewer
157
+ files={galleryViewerSquareFiles}
158
+ viewMode={GalleryViewMode.SQUARE}
159
+ />
160
+ ```
161
+
162
+ #### Single Item Fallback Ratio
163
+
164
+ ```tsx
165
+ <GalleryViewer
166
+ files={[
167
+ {
168
+ id: 'single-fallback-image',
169
+ file: {
170
+ id: 'fallback-1',
171
+ url: 'https://picsum.photos/id/1025/1200/900',
172
+ },
173
+ },
174
+ ]}
175
+ viewMode={GalleryViewMode.GRID}
176
+ />
177
+ ```
178
+
179
+ ### Props
180
+
181
+ No prop documentation available.
182
+
183
+ ### Types
184
+
185
+ No additional exported types documented.
186
+
187
+ ### Usage Notes
188
+
189
+ - Import `GalleryViewer` directly from `@chayns-components/gallery` instead of internal source paths.
190
+ - Start with one of the documented Storybook examples and adapt the props incrementally for your use case.
191
+
192
+ ### Anti Patterns
193
+
194
+ - Avoid imports from internal paths such as `@chayns-components/gallery/src/...`; always use the public package export.
@@ -4,17 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
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");
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _GalleryEditor = _interopRequireDefault(require("./gallery-editor/GalleryEditor"));
9
+ var _GalleryViewer = _interopRequireDefault(require("./gallery-viewer/GalleryViewer"));
11
10
  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
11
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
18
12
  const Gallery = ({
19
13
  allowDragAndDrop = false,
20
14
  doubleFileDialogMessage = 'Diese Datei ist bereits vorhanden',
@@ -26,326 +20,19 @@ const Gallery = ({
26
20
  onFileCountChange,
27
21
  onRemove,
28
22
  viewMode = _gallery.GalleryViewMode.GRID
29
- }) => {
30
- const [fileItems, setFileItems] = (0, _react.useState)([]);
31
-
32
- /**
33
- * This function adds a previewUrl to fileItems
34
- */
35
- const handlePreviewUrlCallback = (previewUrl, file) => {
36
- setFileItems(prevState => prevState.map(prevFile => {
37
- if (prevFile.id === file.id) {
38
- return {
39
- ...prevFile,
40
- previewUrl
41
- };
42
- }
43
- return prevFile;
44
- }));
45
- };
46
- const callDuplicateFileDialog = (0, _react.useCallback)(() => {
47
- (0, _chaynsApi.createDialog)({
48
- type: _chaynsApi.DialogType.ALERT,
49
- text: doubleFileDialogMessage
50
- });
51
- }, [doubleFileDialogMessage]);
52
-
53
- /**
54
- * This function adds uploaded files to fileItems
55
- */
56
- const handleUploadFileCallback = (0, _react.useCallback)((file, uploadedFile) => {
57
- setFileItems(prevState => {
58
- const updatedState = prevState.map(prevFile => {
59
- var _prevFile$uploadedFil;
60
- if (((_prevFile$uploadedFil = prevFile.uploadedFile) === null || _prevFile$uploadedFil === void 0 ? void 0 : _prevFile$uploadedFil.url) === uploadedFile.url) {
61
- callDuplicateFileDialog();
62
- return undefined;
63
- }
64
- if (prevFile.id === file.id) {
65
- if (typeof onAdd === 'function') {
66
- const prevElement = prevState.find(({
67
- uploadedFile: newUploadedFile
68
- }) => (newUploadedFile === null || newUploadedFile === void 0 ? void 0 : newUploadedFile.url) === (uploadedFile === null || uploadedFile === void 0 ? void 0 : uploadedFile.url));
69
- if (!prevElement) {
70
- onAdd({
71
- file: uploadedFile,
72
- id: file.id
73
- });
74
- }
75
- }
76
- return {
77
- ...prevFile,
78
- uploadedFile,
79
- state: 'uploaded'
80
- };
81
- }
82
- return prevFile;
83
- });
84
- const tmp = [];
85
- updatedState.forEach(updatedFile => {
86
- if (updatedFile !== undefined) {
87
- tmp.push(updatedFile);
88
- }
89
- });
90
- return tmp ?? [];
91
- });
92
- }, [callDuplicateFileDialog, onAdd]);
93
-
94
- /**
95
- * Returns the current count to check if all files are uploaded
96
- */
97
- (0, _react.useEffect)(() => {
98
- if (typeof onFileCountChange === 'function') {
99
- onFileCountChange(fileItems.length);
100
- }
101
- }, [fileItems.length, onFileCountChange]);
102
-
103
- /**
104
- * Prepares files for previewUrl and upload
105
- */
106
- (0, _react.useEffect)(() => {
107
- const filesToGeneratePreview = fileItems.filter(file => file.file && !file.previewUrl && (file.state === 'none' || !file.state));
108
- const filesToUpload = fileItems.filter(file => !file.uploadedFile && file.state !== 'uploading');
109
- filesToGeneratePreview.forEach(file => {
110
- if (!file.file) {
111
- return;
112
- }
113
- if (file.file.type.includes('video/')) {
114
- (0, _file.generateVideoThumbnail)({
115
- file: file.file,
116
- callback: previewUrl => handlePreviewUrlCallback(previewUrl, file)
117
- });
118
- return;
119
- }
120
- (0, _file.generatePreviewUrl)({
121
- file: file.file,
122
- callback: previewUrl => handlePreviewUrlCallback(previewUrl, file)
123
- });
124
- });
125
- filesToUpload.forEach(file => {
126
- setFileItems(prevState => prevState.map(prevFile => {
127
- if (prevFile.id === file.id) {
128
- return {
129
- ...prevFile,
130
- state: 'uploading'
131
- };
132
- }
133
- return prevFile;
134
- }));
135
- void (0, _core.uploadFile)({
136
- fileToUpload: file,
137
- callback: UploadedFile => handleUploadFileCallback(file, UploadedFile)
138
- });
139
- });
140
- }, [fileItems, handleUploadFileCallback]);
141
-
142
- /**
143
- * This function formats and adds files to fileItems
144
- */
145
- const handleAddFiles = (0, _react.useCallback)(filesToAdd => {
146
- const newFileItems = [];
147
- filesToAdd.forEach(file => {
148
- if (file && !(0, _file.filterDuplicateFile)({
149
- files: fileItems,
150
- newFile: file
151
- })) {
152
- newFileItems.push({
153
- id: (0, _uuid.v4)(),
154
- file,
155
- state: 'none'
156
- });
157
- }
158
- });
159
- let tmp = newFileItems;
160
- if (maxFiles) {
161
- tmp = newFileItems.slice(0, maxFiles - (fileItems.length + filesToAdd.length - 1));
162
- }
163
- setFileItems(prevState => [...prevState, ...tmp]);
164
- }, [fileItems, maxFiles]);
165
-
166
- /**
167
- * This function adds external files to fileItems
168
- */
169
- (0, _react.useEffect)(() => {
170
- if (files) {
171
- const newFileItems = [];
172
- files.forEach(file => {
173
- newFileItems.push({
174
- id: file.id ?? (0, _uuid.v4)(),
175
- uploadedFile: file.file,
176
- file: undefined,
177
- state: 'uploaded',
178
- previewUrl: undefined
179
- });
180
- });
181
- setFileItems(prevState => {
182
- const updatedItems = prevState.map(prevItem => {
183
- const newItem = newFileItems.find(item => item.uploadedFile && item.uploadedFile.url === (prevItem.uploadedFile && prevItem.uploadedFile.url));
184
- return newItem || prevItem;
185
- });
186
- return updatedItems.concat(newFileItems.filter(newItem => !prevState.some(prevItem => prevItem.uploadedFile && newItem.uploadedFile && prevItem.uploadedFile.url === newItem.uploadedFile.url)));
187
- });
188
- }
189
- }, [files]);
190
-
191
- /**
192
- * This function deletes a selected file from the file list
193
- */
194
- const handleDeleteFile = (0, _react.useCallback)(id => {
195
- let fileToDelete;
196
- const filteredFiles = fileItems.filter(file => {
197
- const fileId = file.id;
198
- if (fileId === id && file.uploadedFile) {
199
- fileToDelete = {
200
- file: file.uploadedFile,
201
- id
202
- };
203
- }
204
- return fileId !== id;
205
- });
206
- setFileItems(filteredFiles);
207
- if (!fileToDelete || typeof onRemove !== 'function') {
208
- return;
209
- }
210
- onRemove(fileToDelete);
211
- }, [fileItems, onRemove]);
212
-
213
- /**
214
- * This function handles the drag and drop
215
- */
216
- const handleDrop = (0, _react.useCallback)(e => {
217
- if (!allowDragAndDrop) {
218
- return;
219
- }
220
- e.preventDefault();
221
- const draggedFiles = Array.from(e.dataTransfer.files);
222
- handleAddFiles(draggedFiles);
223
- }, [allowDragAndDrop, handleAddFiles]);
224
-
225
- /**
226
- * Opens the files in a slideShow
227
- */
228
- const openFiles = (0, _react.useCallback)(file => {
229
- let startIndex = 0;
230
- try {
231
- startIndex = fileItems.findIndex(item => item.id === file.id);
232
- const items = fileItems.map(item => {
233
- var _item$uploadedFile;
234
- return {
235
- url: ((_item$uploadedFile = item.uploadedFile) === null || _item$uploadedFile === void 0 ? void 0 : _item$uploadedFile.url.replace('_0.mp4', '.mp4')) ?? '',
236
- mediaType: item.uploadedFile && 'thumbnailUrl' in item.uploadedFile ? _chaynsApi.MediaType.VIDEO : _chaynsApi.MediaType.IMAGE
237
- };
238
- });
239
-
240
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
241
- // @ts-ignore
242
- void (0, _chaynsApi.openMedia)({
243
- items,
244
- startIndex
245
- });
246
- } catch (_) {
247
- if (file.uploadedFile && 'thumbnailUrl' in file.uploadedFile) {
248
- void (0, _chaynsApi.openVideo)({
249
- url: file.uploadedFile.url
250
- });
251
- } else {
252
- const imageFiles = [];
253
- fileItems.forEach(({
254
- uploadedFile
255
- }) => {
256
- if (uploadedFile && !('thumbnailUrl' in uploadedFile)) {
257
- imageFiles.push({
258
- url: uploadedFile.url
259
- });
260
- }
261
- });
262
- startIndex = imageFiles.findIndex(item => {
263
- var _file$uploadedFile;
264
- return item.url === ((_file$uploadedFile = file.uploadedFile) === null || _file$uploadedFile === void 0 ? void 0 : _file$uploadedFile.url);
265
- });
266
- const startFile = imageFiles.shift();
267
- if (!startFile) {
268
- return;
269
- }
270
- void (0, _chaynsApi.openImage)({
271
- items: [startFile, ...imageFiles],
272
- startIndex
273
- });
274
- }
275
- }
276
- }, [fileItems]);
277
-
278
- /**
279
- * Returns the ratio of the single file
280
- */
281
- const ratio = (0, _react.useMemo)(() => {
282
- var _fileItems$;
283
- switch (fileItems.length) {
284
- case 0:
285
- return 0;
286
- case 1:
287
- return Math.max(((_fileItems$ = fileItems[0]) === null || _fileItems$ === void 0 || (_fileItems$ = _fileItems$.uploadedFile) === null || _fileItems$ === void 0 ? void 0 : _fileItems$.ratio) ?? 1, 1);
288
- case 2:
289
- return 2;
290
- case 3:
291
- return 3;
292
- default:
293
- return 1;
294
- }
295
- }, [fileItems]);
296
- const galleryContent = (0, _react.useMemo)(() => {
297
- const combinedFilesLength = fileItems.length;
298
- if (isEditMode) {
299
- const items = fileItems.map(file => /*#__PURE__*/_react.default.createElement(_GalleryItem.default, {
300
- key: file.id,
301
- fileItem: file,
302
- isEditMode: true,
303
- onClick: openFiles,
304
- handleDeleteFile: handleDeleteFile
305
- }));
306
- if (maxFiles && maxFiles <= combinedFilesLength) {
307
- return items;
308
- }
309
- items.push(/*#__PURE__*/_react.default.createElement(_AddFile.default, {
310
- key: "add_file",
311
- onAdd: handleAddFiles
312
- }));
313
- return items;
314
- }
315
- const shortedFiles = fileItems.slice(0, 4);
316
- return shortedFiles.map((file, index) => {
317
- let imageRatio = 1;
318
- if (viewMode === _gallery.GalleryViewMode.GRID) {
319
- if (combinedFilesLength === 1) {
320
- var _fileItems$2;
321
- imageRatio = ((_fileItems$2 = fileItems[0]) === null || _fileItems$2 === void 0 || (_fileItems$2 = _fileItems$2.uploadedFile) === null || _fileItems$2 === void 0 ? void 0 : _fileItems$2.ratio) ?? 1;
322
- } else if (combinedFilesLength === 2 && (index === 0 || index === 1)) {
323
- imageRatio = 0.5;
324
- } else if (index === 0 && combinedFilesLength > 2 || combinedFilesLength === 3 && (index === 1 || index === 2)) {
325
- imageRatio = 1.5;
326
- }
327
- }
328
- return /*#__PURE__*/_react.default.createElement(_GalleryItem.default, {
329
- key: file.id,
330
- fileItem: file,
331
- isEditMode: false,
332
- handleDeleteFile: handleDeleteFile,
333
- onClick: openFiles,
334
- ratio: imageRatio,
335
- remainingItemsLength: combinedFilesLength > 4 && index === 3 ? combinedFilesLength : undefined
336
- });
337
- });
338
- }, [fileItems, isEditMode, maxFiles, handleAddFiles, openFiles, handleDeleteFile, viewMode]);
339
- return (0, _react.useMemo)(() => /*#__PURE__*/_react.default.createElement(_Gallery.StyledGallery, null, isEditMode ? /*#__PURE__*/_react.default.createElement(_Gallery.StyledGalleryEditModeWrapper, {
340
- $fileMinWidth: fileMinWidth,
341
- onDragOver: e => e.preventDefault(),
342
- onDrop: e => void handleDrop(e)
343
- }, galleryContent) : /*#__PURE__*/_react.default.createElement(_Gallery.StyledGalleryItemWrapper, {
344
- $ratio: ratio,
345
- $uploadedFileLength: fileItems.length,
346
- $viewMode: viewMode
347
- }, galleryContent)), [isEditMode, fileMinWidth, galleryContent, ratio, fileItems.length, viewMode, handleDrop]);
348
- };
23
+ }) => isEditMode ? /*#__PURE__*/_react.default.createElement(_GalleryEditor.default, {
24
+ allowDragAndDrop: allowDragAndDrop,
25
+ doubleFileDialogMessage: doubleFileDialogMessage,
26
+ fileMinWidth: fileMinWidth,
27
+ files: files,
28
+ maxFiles: maxFiles,
29
+ onAdd: onAdd,
30
+ onFileCountChange: onFileCountChange,
31
+ onRemove: onRemove
32
+ }) : /*#__PURE__*/_react.default.createElement(_GalleryViewer.default, {
33
+ files: files,
34
+ viewMode: viewMode
35
+ });
349
36
  Gallery.displayName = 'Gallery';
350
37
  var _default = exports.default = Gallery;
351
38
  //# sourceMappingURL=Gallery.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Gallery.js","names":["_core","require","_chaynsApi","_react","_interopRequireWildcard","_uuid","_gallery","_file","_AddFile","_interopRequireDefault","_GalleryItem","_Gallery","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","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","_","openVideo","imageFiles","_file$uploadedFile","startFile","shift","openImage","ratio","useMemo","_fileItems$","Math","max","galleryContent","combinedFilesLength","createElement","key","fileItem","onClick","shortedFiles","index","imageRatio","_fileItems$2","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 {\n createDialog,\n DialogType,\n MediaType,\n openImage,\n OpenImageItem,\n openMedia,\n OpenMediaItem,\n openVideo,\n} 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 let startIndex = 0;\n\n try {\n 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 } catch (_) {\n if (file.uploadedFile && 'thumbnailUrl' in file.uploadedFile) {\n void openVideo({ url: file.uploadedFile.url });\n } else {\n const imageFiles: OpenImageItem[] = [];\n\n fileItems.forEach(({ uploadedFile }) => {\n if (uploadedFile && !('thumbnailUrl' in uploadedFile)) {\n imageFiles.push({ url: uploadedFile.url });\n }\n });\n\n startIndex = imageFiles.findIndex(\n (item) => item.url === file.uploadedFile?.url,\n );\n\n const startFile = imageFiles.shift();\n\n if (!startFile) {\n return;\n }\n\n void openImage({ items: [startFile, ...imageFiles], startIndex });\n }\n }\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 === 1) {\n imageRatio = fileItems[0]?.uploadedFile?.ratio ?? 1;\n } else 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":[]}
1
+ {"version":3,"file":"Gallery.js","names":["_react","_interopRequireDefault","require","_GalleryEditor","_GalleryViewer","_gallery","e","__esModule","default","Gallery","allowDragAndDrop","doubleFileDialogMessage","isEditMode","fileMinWidth","files","maxFiles","onAdd","onFileCountChange","onRemove","viewMode","GalleryViewMode","GRID","createElement","displayName","_default","exports"],"sources":["../../../src/components/Gallery.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport GalleryEditor from './gallery-editor/GalleryEditor';\nimport GalleryViewer from './gallery-viewer/GalleryViewer';\nimport type { GalleryProps } from './Gallery.types';\nimport { GalleryViewMode } from '../types/gallery';\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 isEditMode ? (\n <GalleryEditor\n allowDragAndDrop={allowDragAndDrop}\n doubleFileDialogMessage={doubleFileDialogMessage}\n fileMinWidth={fileMinWidth}\n files={files}\n maxFiles={maxFiles}\n onAdd={onAdd}\n onFileCountChange={onFileCountChange}\n onRemove={onRemove}\n />\n ) : (\n <GalleryViewer files={files} viewMode={viewMode} />\n );\n\nGallery.displayName = 'Gallery';\n\nexport default Gallery;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,cAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,cAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEA,IAAAG,QAAA,GAAAH,OAAA;AAAmD,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEnD,MAAMG,OAAyB,GAAGA,CAAC;EAC/BC,gBAAgB,GAAG,KAAK;EACxBC,uBAAuB,GAAG,mCAAmC;EAC7DC,UAAU,GAAG,KAAK;EAClBC,YAAY,GAAG,GAAG;EAClBC,KAAK;EACLC,QAAQ;EACRC,KAAK;EACLC,iBAAiB;EACjBC,QAAQ;EACRC,QAAQ,GAAGC,wBAAe,CAACC;AAC/B,CAAC,KACGT,UAAU,gBACNZ,MAAA,CAAAQ,OAAA,CAAAc,aAAA,CAACnB,cAAA,CAAAK,OAAa;EACVE,gBAAgB,EAAEA,gBAAiB;EACnCC,uBAAuB,EAAEA,uBAAwB;EACjDE,YAAY,EAAEA,YAAa;EAC3BC,KAAK,EAAEA,KAAM;EACbC,QAAQ,EAAEA,QAAS;EACnBC,KAAK,EAAEA,KAAM;EACbC,iBAAiB,EAAEA,iBAAkB;EACrCC,QAAQ,EAAEA;AAAS,CACtB,CAAC,gBAEFlB,MAAA,CAAAQ,OAAA,CAAAc,aAAA,CAAClB,cAAA,CAAAI,OAAa;EAACM,KAAK,EAAEA,KAAM;EAACK,QAAQ,EAAEA;AAAS,CAAE,CACrD;AAELV,OAAO,CAACc,WAAW,GAAG,SAAS;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAjB,OAAA,GAEjBC,OAAO","ignoreList":[]}