@blaze-cms/plugin-media-ui 0.146.0-node18.1 → 0.146.0-rc-eagle-3.0

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 (258) hide show
  1. package/CHANGELOG.md +13 -12
  2. package/lib/components/CardMedia/CardMedia.js +235 -244
  3. package/lib/components/CardMedia/CardMedia.js.map +1 -1
  4. package/lib/components/CardMedia/index.js +2 -3
  5. package/lib/components/CardMedia/index.js.map +1 -1
  6. package/lib/components/EditMediaFile/EditMediaFile.js +149 -115
  7. package/lib/components/EditMediaFile/EditMediaFile.js.map +1 -1
  8. package/lib/components/EditMediaFile/EditMediaFilePage.js +89 -97
  9. package/lib/components/EditMediaFile/EditMediaFilePage.js.map +1 -1
  10. package/lib/components/EditMediaFile/index.js +2 -3
  11. package/lib/components/EditMediaFile/index.js.map +1 -1
  12. package/lib/components/EditorAdapter/EditorAdapter.js +43 -22
  13. package/lib/components/EditorAdapter/EditorAdapter.js.map +1 -1
  14. package/lib/components/EditorAdapter/index.js +2 -3
  15. package/lib/components/EditorAdapter/index.js.map +1 -1
  16. package/lib/components/FileList/FilesListContext/index.js +3 -4
  17. package/lib/components/FileList/FilesListContext/index.js.map +1 -1
  18. package/lib/components/FileList/FilesListProvider/index.js +27 -29
  19. package/lib/components/FileList/FilesListProvider/index.js.map +1 -1
  20. package/lib/components/FileList/useFileList/index.js +3 -6
  21. package/lib/components/FileList/useFileList/index.js.map +1 -1
  22. package/lib/components/FileList/useGetFiles/getFiles.js +167 -185
  23. package/lib/components/FileList/useGetFiles/getFiles.js.map +1 -1
  24. package/lib/components/FileList/useGetFiles/index.js +2 -3
  25. package/lib/components/FileList/useGetFiles/index.js.map +1 -1
  26. package/lib/components/FileList/useGetFiles/useGetFiles.js +93 -133
  27. package/lib/components/FileList/useGetFiles/useGetFiles.js.map +1 -1
  28. package/lib/components/FileList/useGetFilesList/getCounters.js +10 -30
  29. package/lib/components/FileList/useGetFilesList/getCounters.js.map +1 -1
  30. package/lib/components/FileList/useGetFilesList/index.js +2 -3
  31. package/lib/components/FileList/useGetFilesList/index.js.map +1 -1
  32. package/lib/components/FileList/useGetFilesList/useGetFilesList.js +92 -110
  33. package/lib/components/FileList/useGetFilesList/useGetFilesList.js.map +1 -1
  34. package/lib/components/FilePreview/Actions/index.js +25 -38
  35. package/lib/components/FilePreview/Actions/index.js.map +1 -1
  36. package/lib/components/FilePreview/Image/Image.js +35 -24
  37. package/lib/components/FilePreview/Image/Image.js.map +1 -1
  38. package/lib/components/FilePreview/Image/RawImage.js +25 -27
  39. package/lib/components/FilePreview/Image/RawImage.js.map +1 -1
  40. package/lib/components/FilePreview/Image/imageSchema.js +10 -7
  41. package/lib/components/FilePreview/Image/imageSchema.js.map +1 -1
  42. package/lib/components/FilePreview/Image/index.js +1 -2
  43. package/lib/components/FilePreview/Image/index.js.map +1 -1
  44. package/lib/components/FilePreview/ModalContext.js +9 -0
  45. package/lib/components/FilePreview/ModalContext.js.map +1 -0
  46. package/lib/components/FilePreview/PDF/PDF.js +44 -31
  47. package/lib/components/FilePreview/PDF/PDF.js.map +1 -1
  48. package/lib/components/FilePreview/PDF/RawPDF.js +27 -29
  49. package/lib/components/FilePreview/PDF/RawPDF.js.map +1 -1
  50. package/lib/components/FilePreview/PDF/index.js +1 -2
  51. package/lib/components/FilePreview/PDF/index.js.map +1 -1
  52. package/lib/components/FilePreview/PDF/schema.js +3 -3
  53. package/lib/components/FilePreview/PDF/schema.js.map +1 -1
  54. package/lib/components/FilePreview/get-preview.js +12 -10
  55. package/lib/components/FilePreview/get-preview.js.map +1 -1
  56. package/lib/components/FilePreview/index.js +111 -58
  57. package/lib/components/FilePreview/index.js.map +1 -1
  58. package/lib/components/FilePreview/previewDefault/PreviewDefault.js +35 -23
  59. package/lib/components/FilePreview/previewDefault/PreviewDefault.js.map +1 -1
  60. package/lib/components/FilePreview/previewDefault/RawPreviewDefault.js +33 -27
  61. package/lib/components/FilePreview/previewDefault/RawPreviewDefault.js.map +1 -1
  62. package/lib/components/FilePreview/previewDefault/icons/DefaultIcon.js +120 -123
  63. package/lib/components/FilePreview/previewDefault/icons/DefaultIcon.js.map +1 -1
  64. package/lib/components/FilePreview/previewDefault/icons/index.js +2 -3
  65. package/lib/components/FilePreview/previewDefault/icons/index.js.map +1 -1
  66. package/lib/components/FilePreview/previewDefault/index.js +1 -2
  67. package/lib/components/FilePreview/previewDefault/index.js.map +1 -1
  68. package/lib/components/FilePreview/previewDefault/previewDefaultSchema.js +3 -3
  69. package/lib/components/FilePreview/previewDefault/previewDefaultSchema.js.map +1 -1
  70. package/lib/components/FilePreviewReadOnly/FileList.js +10 -12
  71. package/lib/components/FilePreviewReadOnly/FileList.js.map +1 -1
  72. package/lib/components/FilePreviewReadOnly/FilePreviewList.js +14 -20
  73. package/lib/components/FilePreviewReadOnly/FilePreviewList.js.map +1 -1
  74. package/lib/components/FilePreviewReadOnly/FilePreviewReadOnly.js +53 -98
  75. package/lib/components/FilePreviewReadOnly/FilePreviewReadOnly.js.map +1 -1
  76. package/lib/components/FilePreviewReadOnly/index.js +2 -3
  77. package/lib/components/FilePreviewReadOnly/index.js.map +1 -1
  78. package/lib/components/FilePreviewReadOnly/mappers/format-initial-value.js +7 -8
  79. package/lib/components/FilePreviewReadOnly/mappers/format-initial-value.js.map +1 -1
  80. package/lib/components/FilePreviewReadOnly/mappers/index.js +1 -2
  81. package/lib/components/FilePreviewReadOnly/mappers/index.js.map +1 -1
  82. package/lib/components/FileUploadAdapter/FileList.js +27 -39
  83. package/lib/components/FileUploadAdapter/FileList.js.map +1 -1
  84. package/lib/components/FileUploadAdapter/FilePreviewList.js +14 -20
  85. package/lib/components/FileUploadAdapter/FilePreviewList.js.map +1 -1
  86. package/lib/components/FileUploadAdapter/FileReorderList.js +18 -21
  87. package/lib/components/FileUploadAdapter/FileReorderList.js.map +1 -1
  88. package/lib/components/FileUploadAdapter/FileReorderListItem.js +20 -23
  89. package/lib/components/FileUploadAdapter/FileReorderListItem.js.map +1 -1
  90. package/lib/components/FileUploadAdapter/FileUploadAdapter.js +253 -341
  91. package/lib/components/FileUploadAdapter/FileUploadAdapter.js.map +1 -1
  92. package/lib/components/FileUploadAdapter/index.js +2 -3
  93. package/lib/components/FileUploadAdapter/index.js.map +1 -1
  94. package/lib/components/FileUploadAdapter/mappers/format-initial-value.js +7 -8
  95. package/lib/components/FileUploadAdapter/mappers/format-initial-value.js.map +1 -1
  96. package/lib/components/FileUploadAdapter/mappers/get-button-text.js +9 -6
  97. package/lib/components/FileUploadAdapter/mappers/get-button-text.js.map +1 -1
  98. package/lib/components/FileUploadAdapter/mappers/get-format.js +7 -13
  99. package/lib/components/FileUploadAdapter/mappers/get-format.js.map +1 -1
  100. package/lib/components/FileUploadAdapter/mappers/get-number-files-pending-to-fetch.js +6 -5
  101. package/lib/components/FileUploadAdapter/mappers/get-number-files-pending-to-fetch.js.map +1 -1
  102. package/lib/components/FileUploadAdapter/mappers/index.js +6 -7
  103. package/lib/components/FileUploadAdapter/mappers/index.js.map +1 -1
  104. package/lib/components/FileUploadAdapter/mappers/is-unselecting.js +2 -10
  105. package/lib/components/FileUploadAdapter/mappers/is-unselecting.js.map +1 -1
  106. package/lib/components/FileUploadAdapter/mappers/transform-to-array.js +2 -5
  107. package/lib/components/FileUploadAdapter/mappers/transform-to-array.js.map +1 -1
  108. package/lib/components/FileUploadAdapter/useLimit.js +4 -10
  109. package/lib/components/FileUploadAdapter/useLimit.js.map +1 -1
  110. package/lib/components/FileUploadModal/FileUploadModal.js +215 -146
  111. package/lib/components/FileUploadModal/FileUploadModal.js.map +1 -1
  112. package/lib/components/FileUploadModal/index.js +2 -3
  113. package/lib/components/FileUploadModal/index.js.map +1 -1
  114. package/lib/components/FilterPanel/FilterPanel.js +49 -151
  115. package/lib/components/FilterPanel/FilterPanel.js.map +1 -1
  116. package/lib/components/FilterPanel/MediaSearchFilter.js +41 -0
  117. package/lib/components/FilterPanel/MediaSearchFilter.js.map +1 -0
  118. package/lib/components/FilterPanel/index.js +2 -3
  119. package/lib/components/FilterPanel/index.js.map +1 -1
  120. package/lib/components/ListingContainer/Listing/Listing.js +58 -48
  121. package/lib/components/ListingContainer/Listing/Listing.js.map +1 -1
  122. package/lib/components/ListingContainer/Listing/MediaListing/MediaFileList/MediaFileList.js +83 -96
  123. package/lib/components/ListingContainer/Listing/MediaListing/MediaFileList/MediaFileList.js.map +1 -1
  124. package/lib/components/ListingContainer/Listing/MediaListing/MediaFileList/index.js +2 -3
  125. package/lib/components/ListingContainer/Listing/MediaListing/MediaFileList/index.js.map +1 -1
  126. package/lib/components/ListingContainer/Listing/MediaListing/MediaListing.js +23 -26
  127. package/lib/components/ListingContainer/Listing/MediaListing/MediaListing.js.map +1 -1
  128. package/lib/components/ListingContainer/Listing/MediaListing/index.js +2 -3
  129. package/lib/components/ListingContainer/Listing/MediaListing/index.js.map +1 -1
  130. package/lib/components/ListingContainer/Listing/index.js +2 -3
  131. package/lib/components/ListingContainer/Listing/index.js.map +1 -1
  132. package/lib/components/ListingContainer/ListingContainer.js +74 -93
  133. package/lib/components/ListingContainer/ListingContainer.js.map +1 -1
  134. package/lib/components/ListingContainer/index.js +2 -3
  135. package/lib/components/ListingContainer/index.js.map +1 -1
  136. package/lib/components/ListingContainer/mappers/exist-previous.js +3 -10
  137. package/lib/components/ListingContainer/mappers/exist-previous.js.map +1 -1
  138. package/lib/components/ListingContainer/mappers/index.js +2 -3
  139. package/lib/components/ListingContainer/mappers/index.js.map +1 -1
  140. package/lib/components/MediaListing.js +15 -26
  141. package/lib/components/MediaListing.js.map +1 -1
  142. package/lib/constants.js +17 -17
  143. package/lib/constants.js.map +1 -1
  144. package/lib/icons/MediaLibraryIcon.js +17 -20
  145. package/lib/icons/MediaLibraryIcon.js.map +1 -1
  146. package/lib/icons/index.js +2 -3
  147. package/lib/icons/index.js.map +1 -1
  148. package/lib/index.js +67 -92
  149. package/lib/index.js.map +1 -1
  150. package/lib/utils/available-filters/available-filters.js +1 -2
  151. package/lib/utils/available-filters/available-filters.js.map +1 -1
  152. package/lib/utils/bustUrl.js +13 -0
  153. package/lib/utils/bustUrl.js.map +1 -0
  154. package/lib/utils/media-context/index.js +4 -5
  155. package/lib/utils/media-context/index.js.map +1 -1
  156. package/lib/utils/media-context/media-context.js +3 -4
  157. package/lib/utils/media-context/media-context.js.map +1 -1
  158. package/lib/utils/media-context/useMediaContext.js +2 -4
  159. package/lib/utils/media-context/useMediaContext.js.map +1 -1
  160. package/lib-es/components/CardMedia/CardMedia.js +109 -52
  161. package/lib-es/components/CardMedia/CardMedia.js.map +1 -1
  162. package/lib-es/components/EditMediaFile/EditMediaFile.js +109 -53
  163. package/lib-es/components/EditMediaFile/EditMediaFile.js.map +1 -1
  164. package/lib-es/components/EditMediaFile/EditMediaFilePage.js +45 -15
  165. package/lib-es/components/EditMediaFile/EditMediaFilePage.js.map +1 -1
  166. package/lib-es/components/EditorAdapter/EditorAdapter.js +26 -6
  167. package/lib-es/components/EditorAdapter/EditorAdapter.js.map +1 -1
  168. package/lib-es/components/FileList/useGetFiles/getFiles.js +6 -3
  169. package/lib-es/components/FileList/useGetFiles/getFiles.js.map +1 -1
  170. package/lib-es/components/FileList/useGetFiles/useGetFiles.js +7 -2
  171. package/lib-es/components/FileList/useGetFiles/useGetFiles.js.map +1 -1
  172. package/lib-es/components/FileList/useGetFilesList/useGetFilesList.js +4 -1
  173. package/lib-es/components/FileList/useGetFilesList/useGetFilesList.js.map +1 -1
  174. package/lib-es/components/FilePreview/Actions/index.js +2 -2
  175. package/lib-es/components/FilePreview/Actions/index.js.map +1 -1
  176. package/lib-es/components/FilePreview/Image/Image.js +16 -3
  177. package/lib-es/components/FilePreview/Image/Image.js.map +1 -1
  178. package/lib-es/components/FilePreview/Image/imageSchema.js +9 -5
  179. package/lib-es/components/FilePreview/Image/imageSchema.js.map +1 -1
  180. package/lib-es/components/FilePreview/ModalContext.js +3 -0
  181. package/lib-es/components/FilePreview/ModalContext.js.map +1 -0
  182. package/lib-es/components/FilePreview/PDF/PDF.js +19 -4
  183. package/lib-es/components/FilePreview/PDF/PDF.js.map +1 -1
  184. package/lib-es/components/FilePreview/PDF/schema.js +2 -1
  185. package/lib-es/components/FilePreview/PDF/schema.js.map +1 -1
  186. package/lib-es/components/FilePreview/index.js +72 -9
  187. package/lib-es/components/FilePreview/index.js.map +1 -1
  188. package/lib-es/components/FilePreview/previewDefault/PreviewDefault.js +18 -4
  189. package/lib-es/components/FilePreview/previewDefault/PreviewDefault.js.map +1 -1
  190. package/lib-es/components/FilePreview/previewDefault/RawPreviewDefault.js +12 -4
  191. package/lib-es/components/FilePreview/previewDefault/RawPreviewDefault.js.map +1 -1
  192. package/lib-es/components/FilePreview/previewDefault/previewDefaultSchema.js +2 -1
  193. package/lib-es/components/FilePreview/previewDefault/previewDefaultSchema.js.map +1 -1
  194. package/lib-es/components/FilePreviewReadOnly/FileList.js +2 -2
  195. package/lib-es/components/FilePreviewReadOnly/FileList.js.map +1 -1
  196. package/lib-es/components/FilePreviewReadOnly/FilePreviewReadOnly.js +14 -12
  197. package/lib-es/components/FilePreviewReadOnly/FilePreviewReadOnly.js.map +1 -1
  198. package/lib-es/components/FileUploadAdapter/FileUploadAdapter.js +78 -43
  199. package/lib-es/components/FileUploadAdapter/FileUploadAdapter.js.map +1 -1
  200. package/lib-es/components/FileUploadAdapter/mappers/get-button-text.js +5 -3
  201. package/lib-es/components/FileUploadAdapter/mappers/get-button-text.js.map +1 -1
  202. package/lib-es/components/FileUploadAdapter/mappers/get-number-files-pending-to-fetch.js +5 -4
  203. package/lib-es/components/FileUploadAdapter/mappers/get-number-files-pending-to-fetch.js.map +1 -1
  204. package/lib-es/components/FileUploadModal/FileUploadModal.js +157 -29
  205. package/lib-es/components/FileUploadModal/FileUploadModal.js.map +1 -1
  206. package/lib-es/components/FilterPanel/FilterPanel.js +43 -123
  207. package/lib-es/components/FilterPanel/FilterPanel.js.map +1 -1
  208. package/lib-es/components/FilterPanel/MediaSearchFilter.js +34 -0
  209. package/lib-es/components/FilterPanel/MediaSearchFilter.js.map +1 -0
  210. package/lib-es/components/ListingContainer/Listing/Listing.js +17 -5
  211. package/lib-es/components/ListingContainer/Listing/Listing.js.map +1 -1
  212. package/lib-es/components/ListingContainer/Listing/MediaListing/MediaFileList/MediaFileList.js +21 -10
  213. package/lib-es/components/ListingContainer/Listing/MediaListing/MediaFileList/MediaFileList.js.map +1 -1
  214. package/lib-es/components/ListingContainer/Listing/MediaListing/MediaListing.js +12 -3
  215. package/lib-es/components/ListingContainer/Listing/MediaListing/MediaListing.js.map +1 -1
  216. package/lib-es/components/ListingContainer/ListingContainer.js +18 -6
  217. package/lib-es/components/ListingContainer/ListingContainer.js.map +1 -1
  218. package/lib-es/constants.js +3 -2
  219. package/lib-es/constants.js.map +1 -1
  220. package/lib-es/index.js +20 -4
  221. package/lib-es/index.js.map +1 -1
  222. package/lib-es/utils/bustUrl.js +7 -0
  223. package/lib-es/utils/bustUrl.js.map +1 -0
  224. package/package.json +20 -13
  225. package/src/components/CardMedia/CardMedia.js +131 -82
  226. package/src/components/EditMediaFile/EditMediaFile.js +123 -46
  227. package/src/components/EditMediaFile/EditMediaFilePage.js +41 -10
  228. package/src/components/EditorAdapter/EditorAdapter.js +31 -4
  229. package/src/components/FileList/useGetFiles/getFiles.js +12 -4
  230. package/src/components/FileList/useGetFiles/useGetFiles.js +3 -4
  231. package/src/components/FileList/useGetFilesList/useGetFilesList.js +2 -1
  232. package/src/components/FilePreview/Actions/index.js +25 -27
  233. package/src/components/FilePreview/Image/Image.js +15 -2
  234. package/src/components/FilePreview/Image/imageSchema.js +9 -5
  235. package/src/components/FilePreview/ModalContext.js +3 -0
  236. package/src/components/FilePreview/PDF/PDF.js +17 -4
  237. package/src/components/FilePreview/PDF/schema.js +2 -1
  238. package/src/components/FilePreview/index.js +69 -6
  239. package/src/components/FilePreview/previewDefault/PreviewDefault.js +16 -3
  240. package/src/components/FilePreview/previewDefault/RawPreviewDefault.js +17 -7
  241. package/src/components/FilePreview/previewDefault/previewDefaultSchema.js +2 -1
  242. package/src/components/FilePreviewReadOnly/FileList.js +1 -3
  243. package/src/components/FilePreviewReadOnly/FilePreviewReadOnly.js +17 -29
  244. package/src/components/FileUploadAdapter/FileUploadAdapter.js +66 -32
  245. package/src/components/FileUploadAdapter/mappers/get-button-text.js +4 -3
  246. package/src/components/FileUploadAdapter/mappers/get-number-files-pending-to-fetch.js +6 -4
  247. package/src/components/FileUploadModal/FileUploadModal.js +156 -45
  248. package/src/components/FilterPanel/FilterPanel.js +44 -129
  249. package/src/components/FilterPanel/MediaSearchFilter.js +32 -0
  250. package/src/components/ListingContainer/Listing/Listing.js +15 -5
  251. package/src/components/ListingContainer/Listing/MediaListing/MediaFileList/MediaFileList.js +18 -7
  252. package/src/components/ListingContainer/Listing/MediaListing/MediaListing.js +10 -2
  253. package/src/components/ListingContainer/ListingContainer.js +17 -5
  254. package/src/constants.js +16 -2
  255. package/src/index.js +17 -14
  256. package/src/utils/bustUrl.js +6 -0
  257. package/babel.config.js +0 -3
  258. package/jest.config.js +0 -5
@@ -1,16 +1,16 @@
1
- import React, { useState } from 'react';
2
- import More from '@blaze-react/more';
3
- import Button from '@blaze-react/button';
1
+ import React, { useState, useCallback } from 'react';
4
2
  import { DeleteAction } from '@blaze-cms/admin';
5
3
  import PropTypes from 'prop-types';
6
4
  import { getQuery, getMutation } from '@blaze-cms/admin-ui-utils';
7
- import { useMutation, useApolloClient } from '@apollo/client';
5
+ import { useMutation, useApolloClient, useQuery } from '@apollo/client';
8
6
  import classnames from 'classnames';
9
7
  import { useToasts } from '@blaze-react/toaster';
10
8
  import Modal from '@blaze-react/modal';
11
9
  import { createPortal } from 'react-dom';
12
10
  import { Link } from 'react-router-dom';
11
+ import { DeleteIcon, EditIcon } from '@blaze-cms/plugin-page-builder-ui';
13
12
  import EditMediaFile from '../EditMediaFile';
13
+ import bustUrl from '../../utils/bustUrl';
14
14
  const CardMedia = ({
15
15
  onSelected,
16
16
  name,
@@ -20,10 +20,12 @@ const CardMedia = ({
20
20
  selected,
21
21
  displayLayout,
22
22
  data,
23
+ updated,
23
24
  modalTargetRef,
24
25
  updateFile,
25
26
  removeFile,
26
- index
27
+ index,
28
+ openEditInModal
27
29
  }) => {
28
30
  const [displayDeleteModal, setDisplayDeleteModal] = useState(false);
29
31
  const [displayEditModal, setDisplayEditModal] = useState(false);
@@ -35,6 +37,16 @@ const CardMedia = ({
35
37
  const [deleteFile] = useMutation(getMutation('DELETE_FILE_BY_ID'));
36
38
  const [type, extension] = mimetype.split('/');
37
39
  const client = useApolloClient();
40
+ const {
41
+ data: {
42
+ getEntitySchemas: [schemaData] = []
43
+ } = {},
44
+ loading: schemaLoading
45
+ } = useQuery(getQuery('GET_ENTITY_SCHEMA'), {
46
+ variables: {
47
+ identifier: 'file'
48
+ }
49
+ });
38
50
  const deleteFileById = async () => {
39
51
  setDisplayDeleteModal(false);
40
52
  try {
@@ -59,36 +71,44 @@ const CardMedia = ({
59
71
  });
60
72
  }
61
73
  };
62
- const handleClick = () => {
74
+ const handleRowClick = () => onSelected({
75
+ id,
76
+ url,
77
+ name,
78
+ data
79
+ });
80
+ const handleCheckboxToggle = useCallback(e => {
81
+ e.preventDefault();
82
+ e.stopPropagation();
63
83
  onSelected({
64
84
  id,
65
85
  url,
66
86
  name,
67
87
  data
68
88
  });
89
+ }, [id, url, name, data, onSelected]);
90
+ const handleKeyDown = e => {
91
+ if (e.key === ' ' || e.key === 'Enter') {
92
+ e.preventDefault();
93
+ handleRowClick();
94
+ }
69
95
  };
70
- const cardMediaClassNames = classnames('card card--media-list', {
71
- 'card--media-list--selected': selected,
72
- [`card--media-${displayLayout}`]: displayLayout
96
+ const cardMediaClassNames = classnames('card card--media-list card--media-list-row', `card--media-${displayLayout}`, {
97
+ 'card--media-list--selected': selected
73
98
  });
74
- const handleCloseModal = () => {
75
- setDisplayEditModal(false);
76
- };
77
- const handleSaveButtonStatus = state => {
78
- setEnableSaveButton(state);
79
- };
99
+ const handleCloseModal = () => setDisplayEditModal(false);
100
+ const handleSaveButtonStatus = state => setEnableSaveButton(state);
80
101
  const modalActions = [{
81
102
  textButton: 'Cancel',
82
103
  callback: handleCloseModal,
83
104
  modifiers: ['cancel']
84
105
  }, {
85
- textButton: 'Save',
106
+ textButton: 'Apply',
86
107
  callback: () => handleFormSave(),
87
108
  modifiers: enableSaveButton ? [] : ['disabled']
88
109
  }];
89
- const handleFileChange = file => {
90
- setFileData(file);
91
- };
110
+ const handleFileChange = file => setFileData(file);
111
+ const handleStopPropagation = e => e.stopPropagation();
92
112
  const handleFormSave = async () => {
93
113
  try {
94
114
  const {
@@ -98,7 +118,7 @@ const CardMedia = ({
98
118
  } = await client.mutate({
99
119
  mutation: getMutation('UPDATE_FILE'),
100
120
  variables: {
101
- input: fileData
121
+ input: fileData.formData
102
122
  },
103
123
  update(cache, {
104
124
  data: {
@@ -134,6 +154,7 @@ const CardMedia = ({
134
154
  handleCloseModal();
135
155
  setEnableSaveButton(false);
136
156
  };
157
+ if (schemaLoading) return null;
137
158
  return /*#__PURE__*/React.createElement(React.Fragment, null, displayEditModal && createPortal(/*#__PURE__*/React.createElement(Modal, {
138
159
  title: "Edit",
139
160
  actions: modalActions,
@@ -143,19 +164,31 @@ const CardMedia = ({
143
164
  fileId: id,
144
165
  handleSaveButtonStatus: handleSaveButtonStatus,
145
166
  handleFormSave: handleFormSave,
146
- enableSaveButton: enableSaveButton
147
- })), modalTargetRef.current), /*#__PURE__*/React.createElement("div", {
148
- className: cardMediaClassNames,
149
- role: "button",
150
- onClick: handleClick
151
- }, displayDeleteModal && createPortal(/*#__PURE__*/React.createElement(DeleteAction, {
167
+ enableSaveButton: enableSaveButton,
168
+ schemaData: schemaData
169
+ })), modalTargetRef.current), displayDeleteModal && createPortal(/*#__PURE__*/React.createElement(DeleteAction, {
152
170
  onClose: () => setDisplayDeleteModal(false),
153
171
  deleteAction: () => deleteFileById(),
154
172
  itemName: name
155
- }), modalTargetRef.current), type === 'image' ? /*#__PURE__*/React.createElement("div", {
173
+ }), modalTargetRef.current), /*#__PURE__*/React.createElement("div", {
174
+ className: cardMediaClassNames,
175
+ role: "option",
176
+ "aria-selected": selected,
177
+ tabIndex: 0,
178
+ onClick: handleRowClick,
179
+ onKeyDown: handleKeyDown
180
+ }, openEditInModal && /*#__PURE__*/React.createElement("div", {
181
+ className: "card__select"
182
+ }, /*#__PURE__*/React.createElement("input", {
183
+ type: "checkbox",
184
+ "aria-label": `Select ${name}`,
185
+ checked: !!selected,
186
+ onChange: handleCheckboxToggle,
187
+ onClick: handleStopPropagation
188
+ })), type === 'image' ? /*#__PURE__*/React.createElement("div", {
156
189
  className: `card__image card__image--media-${displayLayout}`
157
190
  }, /*#__PURE__*/React.createElement("img", {
158
- src: url,
191
+ src: bustUrl(url, updated),
159
192
  alt: name
160
193
  })) : /*#__PURE__*/React.createElement("div", {
161
194
  className: "card__image card__image--media-list-document"
@@ -163,7 +196,8 @@ const CardMedia = ({
163
196
  xmlns: "http://www.w3.org/2000/svg",
164
197
  width: "100",
165
198
  height: "100",
166
- viewBox: "0 0 8 8"
199
+ viewBox: "0 0 8 8",
200
+ "aria-hidden": "true"
167
201
  }, /*#__PURE__*/React.createElement("path", {
168
202
  d: "M0 0v8h7v-4h-4v-4h-3zm4 0v3h3l-3-3zm-3 2h1v1h-1v-1zm0 2h1v1h-1v-1zm0 2h4v1h-4v-1z"
169
203
  }))), /*#__PURE__*/React.createElement("footer", {
@@ -172,29 +206,48 @@ const CardMedia = ({
172
206
  className: `card__details card__details--media-${displayLayout}`
173
207
  }, /*#__PURE__*/React.createElement("div", {
174
208
  className: `card__title card__title--media-${displayLayout}`
175
- }, /*#__PURE__*/React.createElement("h2", null, name)), /*#__PURE__*/React.createElement("p", null, /*#__PURE__*/React.createElement("span", null, "format: ", extension))), /*#__PURE__*/React.createElement("div", {
176
- className: `card__menu card__menu--${displayLayout}`
177
- }, /*#__PURE__*/React.createElement("div", {
178
- className: "more-menu__wrapper more-menu__wrapper--card"
179
- }, /*#__PURE__*/React.createElement(More, {
180
- displayBg: true
181
- }, /*#__PURE__*/React.createElement(More.Avatar, {
182
- isMoreMenu: true
183
- }, /*#__PURE__*/React.createElement("span", {
184
- className: "material-icons"
185
- }, "more_vert")), /*#__PURE__*/React.createElement(More.Content, {
186
- isMoreMenu: true
187
- }, /*#__PURE__*/React.createElement(Link, {
209
+ }, /*#__PURE__*/React.createElement("h2", {
210
+ className: "card__file-name"
211
+ }, name)), /*#__PURE__*/React.createElement("p", {
212
+ className: "card__meta"
213
+ }, /*#__PURE__*/React.createElement("span", null, "Format: ", extension))), /*#__PURE__*/React.createElement("div", {
214
+ className: `card__menu card__menu--icons card__menu--${displayLayout}`
215
+ }, openEditInModal ? /*#__PURE__*/React.createElement("button", {
216
+ type: "button",
217
+ className: "card__icon-btn",
218
+ title: "Edit",
219
+ "aria-label": "Edit",
220
+ onClick: e => {
221
+ e.preventDefault();
222
+ e.stopPropagation();
223
+ setDisplayEditModal(true);
224
+ }
225
+ }, /*#__PURE__*/React.createElement(EditIcon, {
226
+ width: "20px",
227
+ height: "20px"
228
+ })) : /*#__PURE__*/React.createElement(Link, {
188
229
  to: `/media/edit/${id}`,
189
- className: "more-menu__link"
190
- }, "Edit"), /*#__PURE__*/React.createElement(Button, {
191
- onClick: event => {
192
- event.preventDefault();
193
- event.stopPropagation();
230
+ className: "card__icon-btn",
231
+ title: "Edit",
232
+ "aria-label": "Edit",
233
+ onClick: e => e.stopPropagation()
234
+ }, /*#__PURE__*/React.createElement(EditIcon, {
235
+ width: "20px",
236
+ height: "20px"
237
+ })), /*#__PURE__*/React.createElement("button", {
238
+ type: "button",
239
+ className: "card__icon-btn",
240
+ title: "Delete",
241
+ "aria-label": "Delete",
242
+ onClick: e => {
243
+ e.preventDefault();
244
+ e.stopPropagation();
194
245
  setDisplayDeleteModal(true);
195
- },
196
- className: "more-menu__link"
197
- }, "Delete"))))))));
246
+ }
247
+ }, /*#__PURE__*/React.createElement(DeleteIcon, {
248
+ width: "18px",
249
+ height: "18px"
250
+ }))))));
198
251
  };
199
252
  CardMedia.propTypes = {
200
253
  name: PropTypes.string.isRequired,
@@ -203,17 +256,21 @@ CardMedia.propTypes = {
203
256
  mimetype: PropTypes.string.isRequired,
204
257
  displayLayout: PropTypes.string.isRequired,
205
258
  data: PropTypes.object,
259
+ updated: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
206
260
  onSelected: PropTypes.func,
207
261
  updateFile: PropTypes.func.isRequired,
208
262
  removeFile: PropTypes.func.isRequired,
209
263
  selected: PropTypes.bool,
210
264
  modalTargetRef: PropTypes.object.isRequired,
211
- index: PropTypes.number.isRequired
265
+ index: PropTypes.number.isRequired,
266
+ openEditInModal: PropTypes.bool
212
267
  };
213
268
  CardMedia.defaultProps = {
214
269
  onSelected: () => {},
215
270
  selected: false,
216
- data: {}
271
+ data: {},
272
+ updated: null,
273
+ openEditInModal: false
217
274
  };
218
275
  export default CardMedia;
219
276
  //# sourceMappingURL=CardMedia.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CardMedia.js","names":["React","useState","More","Button","DeleteAction","PropTypes","getQuery","getMutation","useMutation","useApolloClient","classnames","useToasts","Modal","createPortal","Link","EditMediaFile","CardMedia","onSelected","name","url","mimetype","id","selected","displayLayout","data","modalTargetRef","updateFile","removeFile","index","displayDeleteModal","setDisplayDeleteModal","displayEditModal","setDisplayEditModal","enableSaveButton","setEnableSaveButton","fileData","setFileData","addToast","deleteFile","type","extension","split","client","deleteFileById","variables","input","appearance","autoDismiss","error","message","handleClick","cardMediaClassNames","handleCloseModal","handleSaveButtonStatus","state","modalActions","textButton","callback","modifiers","handleFormSave","handleFileChange","file","updatedFile","mutate","mutation","update","cache","fileUpdated","writeQuery","query","result","e","console","createElement","Fragment","title","actions","onClose","onChange","fileId","current","className","role","onClick","deleteAction","itemName","src","alt","xmlns","width","height","viewBox","d","displayBg","Avatar","isMoreMenu","Content","to","event","preventDefault","stopPropagation","propTypes","string","isRequired","object","func","bool","number","defaultProps"],"sources":["../../../src/components/CardMedia/CardMedia.js"],"sourcesContent":["import React, { useState } from 'react';\nimport More from '@blaze-react/more';\nimport Button from '@blaze-react/button';\nimport { DeleteAction } from '@blaze-cms/admin';\nimport PropTypes from 'prop-types';\nimport { getQuery, getMutation } from '@blaze-cms/admin-ui-utils';\nimport { useMutation, useApolloClient } from '@apollo/client';\nimport classnames from 'classnames';\nimport { useToasts } from '@blaze-react/toaster';\nimport Modal from '@blaze-react/modal';\nimport { createPortal } from 'react-dom';\nimport { Link } from 'react-router-dom';\nimport EditMediaFile from '../EditMediaFile';\n\nconst CardMedia = ({\n onSelected,\n name,\n url,\n mimetype,\n id,\n selected,\n displayLayout,\n data,\n modalTargetRef,\n updateFile,\n removeFile,\n index\n}) => {\n const [displayDeleteModal, setDisplayDeleteModal] = useState(false);\n const [displayEditModal, setDisplayEditModal] = useState(false);\n const [enableSaveButton, setEnableSaveButton] = useState(false);\n const [fileData, setFileData] = useState(null);\n const { addToast } = useToasts();\n const [deleteFile] = useMutation(getMutation('DELETE_FILE_BY_ID'));\n const [type, extension] = mimetype.split('/');\n const client = useApolloClient();\n\n const deleteFileById = async () => {\n setDisplayDeleteModal(false);\n try {\n await deleteFile({\n variables: { input: { id } }\n });\n\n removeFile({\n index\n });\n\n addToast(`File: ${name} has been deleted`, {\n appearance: 'success',\n autoDismiss: true\n });\n } catch (error) {\n addToast(error.message, {\n appearance: 'error',\n autoDismiss: true\n });\n }\n };\n\n const handleClick = () => {\n onSelected({ id, url, name, data });\n };\n\n const cardMediaClassNames = classnames('card card--media-list', {\n 'card--media-list--selected': selected,\n [`card--media-${displayLayout}`]: displayLayout\n });\n\n const handleCloseModal = () => {\n setDisplayEditModal(false);\n };\n\n const handleSaveButtonStatus = state => {\n setEnableSaveButton(state);\n };\n\n const modalActions = [\n {\n textButton: 'Cancel',\n callback: handleCloseModal,\n modifiers: ['cancel']\n },\n {\n textButton: 'Save',\n callback: () => handleFormSave(),\n modifiers: enableSaveButton ? [] : ['disabled']\n }\n ];\n\n const handleFileChange = file => {\n setFileData(file);\n };\n\n const handleFormSave = async () => {\n try {\n const {\n data: { updateFile: updatedFile }\n } = await client.mutate({\n mutation: getMutation('UPDATE_FILE'),\n variables: { input: fileData },\n update(cache, { data: { updateFile: fileUpdated } }) {\n cache.writeQuery({\n query: getQuery('GET_FILE_BY_ID'),\n variables: { id },\n data: { file: fileUpdated.result }\n });\n }\n });\n\n updateFile({ file: updatedFile.result, index });\n addToast(`File: ${fileData.name} has been updated`, {\n appearance: 'success',\n autoDismiss: true\n });\n } catch (e) {\n addToast(`File: ${fileData.name} has not been updated`, {\n appearance: 'error',\n autoDismiss: true\n });\n console.error(e); //eslint-disable-line\n }\n handleCloseModal();\n setEnableSaveButton(false);\n };\n\n return (\n <>\n {displayEditModal &&\n createPortal(\n <Modal title=\"Edit\" actions={modalActions} onClose={handleCloseModal}>\n <EditMediaFile\n onChange={handleFileChange}\n fileId={id}\n handleSaveButtonStatus={handleSaveButtonStatus}\n handleFormSave={handleFormSave}\n enableSaveButton={enableSaveButton}\n />\n </Modal>,\n modalTargetRef.current\n )}\n <div className={cardMediaClassNames} role=\"button\" onClick={handleClick}>\n {displayDeleteModal &&\n createPortal(\n <DeleteAction\n onClose={() => setDisplayDeleteModal(false)}\n deleteAction={() => deleteFileById()}\n itemName={name}\n />,\n modalTargetRef.current\n )}\n\n {type === 'image' ? (\n <div className={`card__image card__image--media-${displayLayout}`}>\n <img src={url} alt={name} />\n </div>\n ) : (\n <div className=\"card__image card__image--media-list-document\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"100\" height=\"100\" viewBox=\"0 0 8 8\">\n <path d=\"M0 0v8h7v-4h-4v-4h-3zm4 0v3h3l-3-3zm-3 2h1v1h-1v-1zm0 2h1v1h-1v-1zm0 2h4v1h-4v-1z\" />\n </svg>\n </div>\n )}\n\n <footer className={`card__footer card__footer--media-${displayLayout}`}>\n <div className={`card__details card__details--media-${displayLayout}`}>\n <div className={`card__title card__title--media-${displayLayout}`}>\n <h2>{name}</h2>\n </div>\n <p>\n <span>format: {extension}</span>\n </p>\n </div>\n <div className={`card__menu card__menu--${displayLayout}`}>\n <div className=\"more-menu__wrapper more-menu__wrapper--card\">\n <More displayBg>\n <More.Avatar isMoreMenu>\n <span className=\"material-icons\">more_vert</span>\n </More.Avatar>\n <More.Content isMoreMenu>\n <Link to={`/media/edit/${id}`} className=\"more-menu__link\">\n Edit\n </Link>\n <Button\n onClick={event => {\n event.preventDefault();\n event.stopPropagation();\n setDisplayDeleteModal(true);\n }}\n className=\"more-menu__link\">\n Delete\n </Button>\n </More.Content>\n </More>\n </div>\n </div>\n </footer>\n </div>\n </>\n );\n};\n\nCardMedia.propTypes = {\n name: PropTypes.string.isRequired,\n url: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n mimetype: PropTypes.string.isRequired,\n displayLayout: PropTypes.string.isRequired,\n data: PropTypes.object,\n onSelected: PropTypes.func,\n updateFile: PropTypes.func.isRequired,\n removeFile: PropTypes.func.isRequired,\n selected: PropTypes.bool,\n modalTargetRef: PropTypes.object.isRequired,\n index: PropTypes.number.isRequired\n};\n\nCardMedia.defaultProps = {\n onSelected: () => {},\n selected: false,\n data: {}\n};\n\nexport default CardMedia;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"CardMedia.js","names":["React","useState","useCallback","DeleteAction","PropTypes","getQuery","getMutation","useMutation","useApolloClient","useQuery","classnames","useToasts","Modal","createPortal","Link","DeleteIcon","EditIcon","EditMediaFile","bustUrl","CardMedia","onSelected","name","url","mimetype","id","selected","displayLayout","data","updated","modalTargetRef","updateFile","removeFile","index","openEditInModal","displayDeleteModal","setDisplayDeleteModal","displayEditModal","setDisplayEditModal","enableSaveButton","setEnableSaveButton","fileData","setFileData","addToast","deleteFile","type","extension","split","client","getEntitySchemas","schemaData","loading","schemaLoading","variables","identifier","deleteFileById","input","appearance","autoDismiss","error","message","handleRowClick","handleCheckboxToggle","e","preventDefault","stopPropagation","handleKeyDown","key","cardMediaClassNames","handleCloseModal","handleSaveButtonStatus","state","modalActions","textButton","callback","modifiers","handleFormSave","handleFileChange","file","handleStopPropagation","updatedFile","mutate","mutation","formData","update","cache","fileUpdated","writeQuery","query","result","console","createElement","Fragment","title","actions","onClose","onChange","fileId","current","deleteAction","itemName","className","role","tabIndex","onClick","onKeyDown","checked","src","alt","xmlns","width","height","viewBox","d","to","propTypes","string","isRequired","object","oneOfType","number","func","bool","defaultProps"],"sources":["../../../src/components/CardMedia/CardMedia.js"],"sourcesContent":["import React, { useState, useCallback } from 'react';\nimport { DeleteAction } from '@blaze-cms/admin';\nimport PropTypes from 'prop-types';\nimport { getQuery, getMutation } from '@blaze-cms/admin-ui-utils';\nimport { useMutation, useApolloClient, useQuery } from '@apollo/client';\nimport classnames from 'classnames';\nimport { useToasts } from '@blaze-react/toaster';\nimport Modal from '@blaze-react/modal';\nimport { createPortal } from 'react-dom';\nimport { Link } from 'react-router-dom';\nimport { DeleteIcon, EditIcon } from '@blaze-cms/plugin-page-builder-ui';\nimport EditMediaFile from '../EditMediaFile';\nimport bustUrl from '../../utils/bustUrl';\n\nconst CardMedia = ({\n onSelected,\n name,\n url,\n mimetype,\n id,\n selected,\n displayLayout,\n data,\n updated,\n modalTargetRef,\n updateFile,\n removeFile,\n index,\n openEditInModal\n}) => {\n const [displayDeleteModal, setDisplayDeleteModal] = useState(false);\n const [displayEditModal, setDisplayEditModal] = useState(false);\n const [enableSaveButton, setEnableSaveButton] = useState(false);\n const [fileData, setFileData] = useState(null);\n const { addToast } = useToasts();\n const [deleteFile] = useMutation(getMutation('DELETE_FILE_BY_ID'));\n const [type, extension] = mimetype.split('/');\n const client = useApolloClient();\n\n const { data: { getEntitySchemas: [schemaData] = [] } = {}, loading: schemaLoading } = useQuery(\n getQuery('GET_ENTITY_SCHEMA'),\n {\n variables: { identifier: 'file' }\n }\n );\n\n const deleteFileById = async () => {\n setDisplayDeleteModal(false);\n try {\n await deleteFile({ variables: { input: { id } } });\n removeFile({ index });\n addToast(`File: ${name} has been deleted`, { appearance: 'success', autoDismiss: true });\n } catch (error) {\n addToast(error.message, { appearance: 'error', autoDismiss: true });\n }\n };\n\n const handleRowClick = () => onSelected({ id, url, name, data });\n\n const handleCheckboxToggle = useCallback(\n e => {\n e.preventDefault();\n e.stopPropagation();\n onSelected({ id, url, name, data });\n },\n [id, url, name, data, onSelected]\n );\n\n const handleKeyDown = e => {\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault();\n handleRowClick();\n }\n };\n\n const cardMediaClassNames = classnames(\n 'card card--media-list card--media-list-row',\n `card--media-${displayLayout}`,\n { 'card--media-list--selected': selected }\n );\n\n const handleCloseModal = () => setDisplayEditModal(false);\n const handleSaveButtonStatus = state => setEnableSaveButton(state);\n\n const modalActions = [\n { textButton: 'Cancel', callback: handleCloseModal, modifiers: ['cancel'] },\n {\n textButton: 'Apply',\n callback: () => handleFormSave(),\n modifiers: enableSaveButton ? [] : ['disabled']\n }\n ];\n\n const handleFileChange = file => setFileData(file);\n\n const handleStopPropagation = e => e.stopPropagation();\n\n const handleFormSave = async () => {\n try {\n const {\n data: { updateFile: updatedFile }\n } = await client.mutate({\n mutation: getMutation('UPDATE_FILE'),\n variables: { input: fileData.formData },\n update(cache, { data: { updateFile: fileUpdated } }) {\n cache.writeQuery({\n query: getQuery('GET_FILE_BY_ID'),\n variables: { id },\n data: { file: fileUpdated.result }\n });\n }\n });\n\n updateFile({ file: updatedFile.result, index });\n addToast(`File: ${fileData.name} has been updated`, {\n appearance: 'success',\n autoDismiss: true\n });\n } catch (e) {\n addToast(`File: ${fileData.name} has not been updated`, {\n appearance: 'error',\n autoDismiss: true\n });\n console.error(e); //eslint-disable-line\n }\n handleCloseModal();\n setEnableSaveButton(false);\n };\n\n if (schemaLoading) return null;\n\n return (\n <>\n {displayEditModal &&\n createPortal(\n <Modal title=\"Edit\" actions={modalActions} onClose={handleCloseModal}>\n <EditMediaFile\n onChange={handleFileChange}\n fileId={id}\n handleSaveButtonStatus={handleSaveButtonStatus}\n handleFormSave={handleFormSave}\n enableSaveButton={enableSaveButton}\n schemaData={schemaData}\n />\n </Modal>,\n modalTargetRef.current\n )}\n\n {displayDeleteModal &&\n createPortal(\n <DeleteAction\n onClose={() => setDisplayDeleteModal(false)}\n deleteAction={() => deleteFileById()}\n itemName={name}\n />,\n modalTargetRef.current\n )}\n\n <div\n className={cardMediaClassNames}\n role=\"option\"\n aria-selected={selected}\n tabIndex={0}\n onClick={handleRowClick}\n onKeyDown={handleKeyDown}>\n {openEditInModal && (\n <div className=\"card__select\">\n <input\n type=\"checkbox\"\n aria-label={`Select ${name}`}\n checked={!!selected}\n onChange={handleCheckboxToggle}\n onClick={handleStopPropagation}\n />\n </div>\n )}\n {type === 'image' ? (\n <div className={`card__image card__image--media-${displayLayout}`}>\n <img src={bustUrl(url, updated)} alt={name} />\n </div>\n ) : (\n <div className=\"card__image card__image--media-list-document\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"100\"\n height=\"100\"\n viewBox=\"0 0 8 8\"\n aria-hidden=\"true\">\n <path d=\"M0 0v8h7v-4h-4v-4h-3zm4 0v3h3l-3-3zm-3 2h1v1h-1v-1zm0 2h1v1h-1v-1zm0 2h4v1h-4v-1z\" />\n </svg>\n </div>\n )}\n\n <footer className={`card__footer card__footer--media-${displayLayout}`}>\n <div className={`card__details card__details--media-${displayLayout}`}>\n <div className={`card__title card__title--media-${displayLayout}`}>\n <h2 className=\"card__file-name\">{name}</h2>\n </div>\n <p className=\"card__meta\">\n <span>Format: {extension}</span>\n </p>\n </div>\n\n <div className={`card__menu card__menu--icons card__menu--${displayLayout}`}>\n {openEditInModal ? (\n <button\n type=\"button\"\n className=\"card__icon-btn\"\n title=\"Edit\"\n aria-label=\"Edit\"\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n setDisplayEditModal(true);\n }}>\n <EditIcon width=\"20px\" height=\"20px\" />\n </button>\n ) : (\n <Link\n to={`/media/edit/${id}`}\n className=\"card__icon-btn\"\n title=\"Edit\"\n aria-label=\"Edit\"\n onClick={e => e.stopPropagation()}>\n <EditIcon width=\"20px\" height=\"20px\" />\n </Link>\n )}\n\n <button\n type=\"button\"\n className=\"card__icon-btn\"\n title=\"Delete\"\n aria-label=\"Delete\"\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n setDisplayDeleteModal(true);\n }}>\n <DeleteIcon width=\"18px\" height=\"18px\" />\n </button>\n </div>\n </footer>\n </div>\n </>\n );\n};\n\nCardMedia.propTypes = {\n name: PropTypes.string.isRequired,\n url: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n mimetype: PropTypes.string.isRequired,\n displayLayout: PropTypes.string.isRequired,\n data: PropTypes.object,\n updated: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n onSelected: PropTypes.func,\n updateFile: PropTypes.func.isRequired,\n removeFile: PropTypes.func.isRequired,\n selected: PropTypes.bool,\n modalTargetRef: PropTypes.object.isRequired,\n index: PropTypes.number.isRequired,\n openEditInModal: PropTypes.bool\n};\n\nCardMedia.defaultProps = {\n onSelected: () => {},\n selected: false,\n data: {},\n updated: null,\n openEditInModal: false\n};\n\nexport default CardMedia;\n"],"mappings":"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","ignoreList":[]}
@@ -3,27 +3,37 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
3
3
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
4
  import React, { useState, useEffect } from 'react';
5
5
  import PropTypes from 'prop-types';
6
- import { getQuery } from '@blaze-cms/admin-ui-utils';
6
+ import { getQuery, getDynamicQuery } from '@blaze-cms/admin-ui-utils';
7
7
  import { useQuery } from '@apollo/client';
8
+ import { useToasts } from '@blaze-react/toaster';
8
9
  import FilePreview from '../FilePreview';
9
- import { STORE_KEY, NAME } from '../../constants';
10
+ import FileUploadModal from '../FileUploadModal';
11
+ import { FILE_DEFAULT_PROPS } from '../../constants';
10
12
  const EditMediaFile = ({
11
13
  onChange,
12
14
  handleSaveButtonStatus,
13
- enableSaveButton,
14
- fileId
15
+ fileId,
16
+ showChangeButton,
17
+ fileUpdated,
18
+ schemaData
15
19
  }) => {
16
20
  const [formValues, setFormValues] = useState(null);
17
- const query = getQuery('GET_FILE_BY_ID');
21
+ const [displayFileUploadModal, setDisplayFileUploadModal] = useState(false);
22
+ const {
23
+ addToast
24
+ } = useToasts();
25
+ const fileQuery = getDynamicQuery('DATA_QUERY')(schemaData, fileId, null, FILE_DEFAULT_PROPS);
18
26
  const {
19
27
  loading,
20
28
  data: {
21
- file
22
- } = {}
23
- } = useQuery(query, {
29
+ entityData: file
30
+ } = {},
31
+ refetch: refetchFile
32
+ } = useQuery(fileQuery, {
24
33
  variables: {
25
34
  id: fileId
26
- }
35
+ },
36
+ fetchPolicy: 'cache-and-network'
27
37
  });
28
38
  const fileStoresType = getQuery('GET_FILE_STORES');
29
39
  const {
@@ -36,80 +46,126 @@ const EditMediaFile = ({
36
46
  }
37
47
  });
38
48
  useEffect(() => {
39
- if (!formValues && file) {
40
- setFormValues(file);
49
+ if (file) {
50
+ setFormValues(prevFormValues => {
51
+ if (!prevFormValues || prevFormValues.updated !== file.updated) {
52
+ return file;
53
+ }
54
+ return prevFormValues;
55
+ });
41
56
  }
42
- }, [file, formValues, storeType]);
57
+ }, [file]);
58
+ useEffect(() => {
59
+ if (fileUpdated && fileUpdated.updated) {
60
+ setFormValues(fileUpdated);
61
+ }
62
+ }, [fileUpdated]);
43
63
  const handleFormChange = ({
44
64
  isValid,
45
65
  isNewValueSet,
46
66
  valuesChecked
47
67
  }) => {
48
- const valuesCheckedWithoutName = valuesChecked.filter(({
49
- id
50
- }) => {
51
- if (id === NAME || id === STORE_KEY) return false;
52
- return true;
53
- });
54
- const dataValues = valuesCheckedWithoutName.reduce((acc, {
68
+ const baseFile = formValues || file;
69
+ const dataValues = valuesChecked.reduce((acc, {
55
70
  id,
56
- value
71
+ value,
72
+ isDataPropery
57
73
  }) => {
58
- acc[id] = value;
74
+ if (isDataPropery) {
75
+ acc.data[id] = value;
76
+ } else {
77
+ acc[id] = value;
78
+ }
59
79
  return acc;
60
- }, {});
61
- const {
62
- value: newFileName
63
- } = valuesChecked.find(({
64
- id
65
- }) => id === NAME) || {};
66
- const {
67
- value: storeKey
68
- } = valuesChecked.find(({
69
- id
70
- }) => id === STORE_KEY) || {};
80
+ }, {
81
+ id: baseFile.id,
82
+ data: _objectSpread({}, baseFile.data)
83
+ });
84
+ delete dataValues.data.__typename; // Remove __typename if it exists in data to avoid issues with Apollo cache.
85
+
71
86
  const shouldEnableSaveButton = isNewValueSet && isValid;
72
- handleSaveButtonStatus(false);
73
- if (shouldEnableSaveButton && shouldEnableSaveButton !== enableSaveButton) {
74
- handleSaveButtonStatus(shouldEnableSaveButton);
75
- }
76
- const updatedFile = {
77
- id: file.id,
78
- name: newFileName,
79
- storeKey,
80
- data: dataValues
81
- };
87
+ handleSaveButtonStatus(shouldEnableSaveButton);
88
+ const updatedFile = _objectSpread(_objectSpread({}, baseFile), dataValues);
82
89
  setFormValues(updatedFile);
83
- onChange(updatedFile);
90
+ onChange(_objectSpread(_objectSpread({}, updatedFile), {}, {
91
+ formData: dataValues
92
+ }));
84
93
  };
85
- const getFileWithStoreType = () => {
86
- if (storeType) {
94
+ const getFileWithStoreType = sourceFile => {
95
+ const base = sourceFile || file;
96
+ if (storeType && base) {
87
97
  const storeOptions = storeType.map(type => [type.key, type.name]);
88
98
  const defaultStore = storeType.find(type => type.isDefault) || null;
89
- return _objectSpread(_objectSpread({}, file), {}, {
99
+ return _objectSpread(_objectSpread({}, base), {}, {
90
100
  store: {
91
101
  defaultStore,
92
102
  storeOptions
93
103
  }
94
104
  });
95
105
  }
96
- return file;
106
+ return base;
107
+ };
108
+ const closeModalAndSetValue = async (isSaving, values, toastMessage) => {
109
+ if (toastMessage) {
110
+ addToast(toastMessage, {
111
+ appearance: 'success',
112
+ autoDismiss: true
113
+ });
114
+ }
115
+ if (values) {
116
+ const updated = values.id === fileId ? values : _objectSpread(_objectSpread(_objectSpread({}, formValues || file), values), {}, {
117
+ url: values.url || (formValues || file).url
118
+ });
119
+ setFormValues(updated);
120
+ onChange(updated);
121
+ handleSaveButtonStatus(true);
122
+ } else {
123
+ const {
124
+ data: {
125
+ file: refreshedFile
126
+ } = {}
127
+ } = await refetchFile({
128
+ id: fileId,
129
+ timestamp: Date.now()
130
+ });
131
+ if (refreshedFile) {
132
+ setFormValues(refreshedFile);
133
+ onChange(refreshedFile);
134
+ handleSaveButtonStatus(true);
135
+ }
136
+ }
137
+ setDisplayFileUploadModal(false);
97
138
  };
98
- const fileWithStoreType = getFileWithStoreType();
99
- return /*#__PURE__*/React.createElement(React.Fragment, null, !loading ? /*#__PURE__*/React.createElement(React.Fragment, null, file ? /*#__PURE__*/React.createElement(FilePreview, {
139
+ if (loading) return /*#__PURE__*/React.createElement("div", null, "loading...");
140
+ const fileToRender = formValues || file;
141
+ const fileWithStoreType = getFileWithStoreType(fileToRender);
142
+ return !loading ? /*#__PURE__*/React.createElement(React.Fragment, null, !!file && /*#__PURE__*/React.createElement(FilePreview, {
100
143
  file: fileWithStoreType,
101
144
  handleFormChange: handleFormChange,
102
- displayForm: true
103
- }) : null) : /*#__PURE__*/React.createElement("div", null, "loading..."));
145
+ handleChangeFile: () => setDisplayFileUploadModal(true),
146
+ displayForm: true,
147
+ showChangeButton: showChangeButton
148
+ }), displayFileUploadModal && /*#__PURE__*/React.createElement("div", {
149
+ className: "file-upload-modal-wrapper"
150
+ }, /*#__PURE__*/React.createElement(FileUploadModal, {
151
+ onClose: () => setDisplayFileUploadModal(false),
152
+ closeModalAndSetValue: closeModalAndSetValue,
153
+ simpleLayout: true,
154
+ fileId: fileId,
155
+ storeKey: file && file.storeKey,
156
+ getSelectedFiles: () => {}
157
+ }))) : /*#__PURE__*/React.createElement("div", null, "loading...");
104
158
  };
105
159
  EditMediaFile.propTypes = {
106
160
  fileId: PropTypes.string.isRequired,
107
161
  onChange: PropTypes.func.isRequired,
108
162
  handleSaveButtonStatus: PropTypes.func.isRequired,
109
- enableSaveButton: PropTypes.bool
163
+ showChangeButton: PropTypes.bool,
164
+ fileUpdated: PropTypes.object
110
165
  };
111
166
  EditMediaFile.defaultProps = {
112
- enableSaveButton: false
167
+ showChangeButton: false,
168
+ fileUpdated: null
113
169
  };
114
170
  export default EditMediaFile;
115
171
  //# sourceMappingURL=EditMediaFile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditMediaFile.js","names":["React","useState","useEffect","PropTypes","getQuery","useQuery","FilePreview","STORE_KEY","NAME","EditMediaFile","onChange","handleSaveButtonStatus","enableSaveButton","fileId","formValues","setFormValues","query","loading","data","file","variables","id","fileStoresType","getFileStores","storeType","visibleInAdmin","handleFormChange","isValid","isNewValueSet","valuesChecked","valuesCheckedWithoutName","filter","dataValues","reduce","acc","value","newFileName","find","storeKey","shouldEnableSaveButton","updatedFile","name","getFileWithStoreType","storeOptions","map","type","key","defaultStore","isDefault","_objectSpread","store","fileWithStoreType","createElement","Fragment","displayForm","propTypes","string","isRequired","func","bool","defaultProps"],"sources":["../../../src/components/EditMediaFile/EditMediaFile.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { getQuery } from '@blaze-cms/admin-ui-utils';\nimport { useQuery } from '@apollo/client';\nimport FilePreview from '../FilePreview';\nimport { STORE_KEY, NAME } from '../../constants';\n\nconst EditMediaFile = ({ onChange, handleSaveButtonStatus, enableSaveButton, fileId }) => {\n const [formValues, setFormValues] = useState(null);\n const query = getQuery('GET_FILE_BY_ID');\n const { loading, data: { file } = {} } = useQuery(query, {\n variables: { id: fileId }\n });\n\n const fileStoresType = getQuery('GET_FILE_STORES');\n const { data: { getFileStores: storeType = [] } = {} } = useQuery(fileStoresType, {\n variables: { visibleInAdmin: true }\n });\n\n useEffect(() => {\n if (!formValues && file) {\n setFormValues(file);\n }\n }, [file, formValues, storeType]);\n\n const handleFormChange = ({ isValid, isNewValueSet, valuesChecked }) => {\n const valuesCheckedWithoutName = valuesChecked.filter(({ id }) => {\n if (id === NAME || id === STORE_KEY) return false;\n return true;\n });\n\n const dataValues = valuesCheckedWithoutName.reduce((acc, { id, value }) => {\n acc[id] = value;\n return acc;\n }, {});\n const { value: newFileName } = valuesChecked.find(({ id }) => id === NAME) || {};\n const { value: storeKey } = valuesChecked.find(({ id }) => id === STORE_KEY) || {};\n\n const shouldEnableSaveButton = isNewValueSet && isValid;\n handleSaveButtonStatus(false);\n\n if (shouldEnableSaveButton && shouldEnableSaveButton !== enableSaveButton) {\n handleSaveButtonStatus(shouldEnableSaveButton);\n }\n\n const updatedFile = {\n id: file.id,\n name: newFileName,\n storeKey,\n data: dataValues\n };\n setFormValues(updatedFile);\n onChange(updatedFile);\n };\n\n const getFileWithStoreType = () => {\n if (storeType) {\n const storeOptions = storeType.map(type => [type.key, type.name]);\n const defaultStore = storeType.find(type => type.isDefault) || null;\n return { ...file, store: { defaultStore, storeOptions } };\n }\n\n return file;\n };\n\n const fileWithStoreType = getFileWithStoreType();\n\n return (\n <>\n {!loading ? (\n <>\n {file ? (\n <FilePreview file={fileWithStoreType} handleFormChange={handleFormChange} displayForm />\n ) : null}\n </>\n ) : (\n <div>loading...</div>\n )}\n </>\n );\n};\n\nEditMediaFile.propTypes = {\n fileId: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n handleSaveButtonStatus: PropTypes.func.isRequired,\n enableSaveButton: PropTypes.bool\n};\n\nEditMediaFile.defaultProps = {\n enableSaveButton: false\n};\n\nexport default EditMediaFile;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"EditMediaFile.js","names":["React","useState","useEffect","PropTypes","getQuery","getDynamicQuery","useQuery","useToasts","FilePreview","FileUploadModal","FILE_DEFAULT_PROPS","EditMediaFile","onChange","handleSaveButtonStatus","fileId","showChangeButton","fileUpdated","schemaData","formValues","setFormValues","displayFileUploadModal","setDisplayFileUploadModal","addToast","fileQuery","loading","data","entityData","file","refetch","refetchFile","variables","id","fetchPolicy","fileStoresType","getFileStores","storeType","visibleInAdmin","prevFormValues","updated","handleFormChange","isValid","isNewValueSet","valuesChecked","baseFile","dataValues","reduce","acc","value","isDataPropery","_objectSpread","__typename","shouldEnableSaveButton","updatedFile","formData","getFileWithStoreType","sourceFile","base","storeOptions","map","type","key","name","defaultStore","find","isDefault","store","closeModalAndSetValue","isSaving","values","toastMessage","appearance","autoDismiss","url","refreshedFile","timestamp","Date","now","createElement","fileToRender","fileWithStoreType","Fragment","handleChangeFile","displayForm","className","onClose","simpleLayout","storeKey","getSelectedFiles","propTypes","string","isRequired","func","bool","object","defaultProps"],"sources":["../../../src/components/EditMediaFile/EditMediaFile.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { getQuery, getDynamicQuery } from '@blaze-cms/admin-ui-utils';\nimport { useQuery } from '@apollo/client';\nimport { useToasts } from '@blaze-react/toaster';\nimport FilePreview from '../FilePreview';\nimport FileUploadModal from '../FileUploadModal';\nimport { FILE_DEFAULT_PROPS } from '../../constants';\n\nconst EditMediaFile = ({\n onChange,\n handleSaveButtonStatus,\n fileId,\n showChangeButton,\n fileUpdated,\n schemaData\n}) => {\n const [formValues, setFormValues] = useState(null);\n const [displayFileUploadModal, setDisplayFileUploadModal] = useState(false);\n const { addToast } = useToasts();\n\n const fileQuery = getDynamicQuery('DATA_QUERY')(schemaData, fileId, null, FILE_DEFAULT_PROPS);\n const {\n loading,\n data: { entityData: file } = {},\n refetch: refetchFile\n } = useQuery(fileQuery, {\n variables: { id: fileId },\n fetchPolicy: 'cache-and-network'\n });\n\n const fileStoresType = getQuery('GET_FILE_STORES');\n const { data: { getFileStores: storeType = [] } = {} } = useQuery(fileStoresType, {\n variables: { visibleInAdmin: true }\n });\n\n useEffect(() => {\n if (file) {\n setFormValues(prevFormValues => {\n if (!prevFormValues || prevFormValues.updated !== file.updated) {\n return file;\n }\n return prevFormValues;\n });\n }\n }, [file]);\n\n useEffect(() => {\n if (fileUpdated && fileUpdated.updated) {\n setFormValues(fileUpdated);\n }\n }, [fileUpdated]);\n\n const handleFormChange = ({ isValid, isNewValueSet, valuesChecked }) => {\n const baseFile = formValues || file;\n\n const dataValues = valuesChecked.reduce(\n (acc, { id, value, isDataPropery }) => {\n if (isDataPropery) {\n acc.data[id] = value;\n } else {\n acc[id] = value;\n }\n return acc;\n },\n { id: baseFile.id, data: { ...baseFile.data } }\n );\n delete dataValues.data.__typename; // Remove __typename if it exists in data to avoid issues with Apollo cache.\n\n const shouldEnableSaveButton = isNewValueSet && isValid;\n handleSaveButtonStatus(shouldEnableSaveButton);\n\n const updatedFile = {\n ...baseFile,\n ...dataValues\n };\n\n setFormValues(updatedFile);\n onChange({ ...updatedFile, formData: dataValues });\n };\n\n const getFileWithStoreType = sourceFile => {\n const base = sourceFile || file;\n if (storeType && base) {\n const storeOptions = storeType.map(type => [type.key, type.name]);\n const defaultStore = storeType.find(type => type.isDefault) || null;\n return { ...base, store: { defaultStore, storeOptions } };\n }\n return base;\n };\n\n const closeModalAndSetValue = async (isSaving, values, toastMessage) => {\n if (toastMessage) {\n addToast(toastMessage, { appearance: 'success', autoDismiss: true });\n }\n\n if (values) {\n const updated =\n values.id === fileId\n ? values\n : {\n ...(formValues || file),\n ...values,\n url: values.url || (formValues || file).url\n };\n setFormValues(updated);\n onChange(updated);\n handleSaveButtonStatus(true);\n } else {\n const { data: { file: refreshedFile } = {} } = await refetchFile({\n id: fileId,\n timestamp: Date.now()\n });\n if (refreshedFile) {\n setFormValues(refreshedFile);\n onChange(refreshedFile);\n handleSaveButtonStatus(true);\n }\n }\n\n setDisplayFileUploadModal(false);\n };\n\n if (loading) return <div>loading...</div>;\n\n const fileToRender = formValues || file;\n const fileWithStoreType = getFileWithStoreType(fileToRender);\n\n return !loading ? (\n <>\n {!!file && (\n <FilePreview\n file={fileWithStoreType}\n handleFormChange={handleFormChange}\n handleChangeFile={() => setDisplayFileUploadModal(true)}\n displayForm\n showChangeButton={showChangeButton}\n />\n )}\n {displayFileUploadModal && (\n <div className=\"file-upload-modal-wrapper\">\n <FileUploadModal\n onClose={() => setDisplayFileUploadModal(false)}\n closeModalAndSetValue={closeModalAndSetValue}\n simpleLayout\n fileId={fileId}\n storeKey={file && file.storeKey}\n getSelectedFiles={() => {}}\n />\n </div>\n )}\n </>\n ) : (\n <div>loading...</div>\n );\n};\n\nEditMediaFile.propTypes = {\n fileId: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n handleSaveButtonStatus: PropTypes.func.isRequired,\n showChangeButton: PropTypes.bool,\n fileUpdated: PropTypes.object\n};\n\nEditMediaFile.defaultProps = {\n showChangeButton: false,\n fileUpdated: null\n};\n\nexport default EditMediaFile;\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,SAAS,QAAQ,OAAO;AAClD,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,QAAQ,EAAEC,eAAe,QAAQ,2BAA2B;AACrE,SAASC,QAAQ,QAAQ,gBAAgB;AACzC,SAASC,SAAS,QAAQ,sBAAsB;AAChD,OAAOC,WAAW,MAAM,gBAAgB;AACxC,OAAOC,eAAe,MAAM,oBAAoB;AAChD,SAASC,kBAAkB,QAAQ,iBAAiB;AAEpD,MAAMC,aAAa,GAAGA,CAAC;EACrBC,QAAQ;EACRC,sBAAsB;EACtBC,MAAM;EACNC,gBAAgB;EAChBC,WAAW;EACXC;AACF,CAAC,KAAK;EACJ,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAGlB,QAAQ,CAAC,IAAI,CAAC;EAClD,MAAM,CAACmB,sBAAsB,EAAEC,yBAAyB,CAAC,GAAGpB,QAAQ,CAAC,KAAK,CAAC;EAC3E,MAAM;IAAEqB;EAAS,CAAC,GAAGf,SAAS,CAAC,CAAC;EAEhC,MAAMgB,SAAS,GAAGlB,eAAe,CAAC,YAAY,CAAC,CAACY,UAAU,EAAEH,MAAM,EAAE,IAAI,EAAEJ,kBAAkB,CAAC;EAC7F,MAAM;IACJc,OAAO;IACPC,IAAI,EAAE;MAAEC,UAAU,EAAEC;IAAK,CAAC,GAAG,CAAC,CAAC;IAC/BC,OAAO,EAAEC;EACX,CAAC,GAAGvB,QAAQ,CAACiB,SAAS,EAAE;IACtBO,SAAS,EAAE;MAAEC,EAAE,EAAEjB;IAAO,CAAC;IACzBkB,WAAW,EAAE;EACf,CAAC,CAAC;EAEF,MAAMC,cAAc,GAAG7B,QAAQ,CAAC,iBAAiB,CAAC;EAClD,MAAM;IAAEqB,IAAI,EAAE;MAAES,aAAa,EAAEC,SAAS,GAAG;IAAG,CAAC,GAAG,CAAC;EAAE,CAAC,GAAG7B,QAAQ,CAAC2B,cAAc,EAAE;IAChFH,SAAS,EAAE;MAAEM,cAAc,EAAE;IAAK;EACpC,CAAC,CAAC;EAEFlC,SAAS,CAAC,MAAM;IACd,IAAIyB,IAAI,EAAE;MACRR,aAAa,CAACkB,cAAc,IAAI;QAC9B,IAAI,CAACA,cAAc,IAAIA,cAAc,CAACC,OAAO,KAAKX,IAAI,CAACW,OAAO,EAAE;UAC9D,OAAOX,IAAI;QACb;QACA,OAAOU,cAAc;MACvB,CAAC,CAAC;IACJ;EACF,CAAC,EAAE,CAACV,IAAI,CAAC,CAAC;EAEVzB,SAAS,CAAC,MAAM;IACd,IAAIc,WAAW,IAAIA,WAAW,CAACsB,OAAO,EAAE;MACtCnB,aAAa,CAACH,WAAW,CAAC;IAC5B;EACF,CAAC,EAAE,CAACA,WAAW,CAAC,CAAC;EAEjB,MAAMuB,gBAAgB,GAAGA,CAAC;IAAEC,OAAO;IAAEC,aAAa;IAAEC;EAAc,CAAC,KAAK;IACtE,MAAMC,QAAQ,GAAGzB,UAAU,IAAIS,IAAI;IAEnC,MAAMiB,UAAU,GAAGF,aAAa,CAACG,MAAM,CACrC,CAACC,GAAG,EAAE;MAAEf,EAAE;MAAEgB,KAAK;MAAEC;IAAc,CAAC,KAAK;MACrC,IAAIA,aAAa,EAAE;QACjBF,GAAG,CAACrB,IAAI,CAACM,EAAE,CAAC,GAAGgB,KAAK;MACtB,CAAC,MAAM;QACLD,GAAG,CAACf,EAAE,CAAC,GAAGgB,KAAK;MACjB;MACA,OAAOD,GAAG;IACZ,CAAC,EACD;MAAEf,EAAE,EAAEY,QAAQ,CAACZ,EAAE;MAAEN,IAAI,EAAAwB,aAAA,KAAON,QAAQ,CAAClB,IAAI;IAAG,CAChD,CAAC;IACD,OAAOmB,UAAU,CAACnB,IAAI,CAACyB,UAAU,CAAC,CAAC;;IAEnC,MAAMC,sBAAsB,GAAGV,aAAa,IAAID,OAAO;IACvD3B,sBAAsB,CAACsC,sBAAsB,CAAC;IAE9C,MAAMC,WAAW,GAAAH,aAAA,CAAAA,aAAA,KACZN,QAAQ,GACRC,UAAU,CACd;IAEDzB,aAAa,CAACiC,WAAW,CAAC;IAC1BxC,QAAQ,CAAAqC,aAAA,CAAAA,aAAA,KAAMG,WAAW;MAAEC,QAAQ,EAAET;IAAU,EAAE,CAAC;EACpD,CAAC;EAED,MAAMU,oBAAoB,GAAGC,UAAU,IAAI;IACzC,MAAMC,IAAI,GAAGD,UAAU,IAAI5B,IAAI;IAC/B,IAAIQ,SAAS,IAAIqB,IAAI,EAAE;MACrB,MAAMC,YAAY,GAAGtB,SAAS,CAACuB,GAAG,CAACC,IAAI,IAAI,CAACA,IAAI,CAACC,GAAG,EAAED,IAAI,CAACE,IAAI,CAAC,CAAC;MACjE,MAAMC,YAAY,GAAG3B,SAAS,CAAC4B,IAAI,CAACJ,IAAI,IAAIA,IAAI,CAACK,SAAS,CAAC,IAAI,IAAI;MACnE,OAAAf,aAAA,CAAAA,aAAA,KAAYO,IAAI;QAAES,KAAK,EAAE;UAAEH,YAAY;UAAEL;QAAa;MAAC;IACzD;IACA,OAAOD,IAAI;EACb,CAAC;EAED,MAAMU,qBAAqB,GAAG,MAAAA,CAAOC,QAAQ,EAAEC,MAAM,EAAEC,YAAY,KAAK;IACtE,IAAIA,YAAY,EAAE;MAChB/C,QAAQ,CAAC+C,YAAY,EAAE;QAAEC,UAAU,EAAE,SAAS;QAAEC,WAAW,EAAE;MAAK,CAAC,CAAC;IACtE;IAEA,IAAIH,MAAM,EAAE;MACV,MAAM9B,OAAO,GACX8B,MAAM,CAACrC,EAAE,KAAKjB,MAAM,GAChBsD,MAAM,GAAAnB,aAAA,CAAAA,aAAA,CAAAA,aAAA,KAEA/B,UAAU,IAAIS,IAAI,GACnByC,MAAM;QACTI,GAAG,EAAEJ,MAAM,CAACI,GAAG,IAAI,CAACtD,UAAU,IAAIS,IAAI,EAAE6C;MAAG,EAC5C;MACPrD,aAAa,CAACmB,OAAO,CAAC;MACtB1B,QAAQ,CAAC0B,OAAO,CAAC;MACjBzB,sBAAsB,CAAC,IAAI,CAAC;IAC9B,CAAC,MAAM;MACL,MAAM;QAAEY,IAAI,EAAE;UAAEE,IAAI,EAAE8C;QAAc,CAAC,GAAG,CAAC;MAAE,CAAC,GAAG,MAAM5C,WAAW,CAAC;QAC/DE,EAAE,EAAEjB,MAAM;QACV4D,SAAS,EAAEC,IAAI,CAACC,GAAG,CAAC;MACtB,CAAC,CAAC;MACF,IAAIH,aAAa,EAAE;QACjBtD,aAAa,CAACsD,aAAa,CAAC;QAC5B7D,QAAQ,CAAC6D,aAAa,CAAC;QACvB5D,sBAAsB,CAAC,IAAI,CAAC;MAC9B;IACF;IAEAQ,yBAAyB,CAAC,KAAK,CAAC;EAClC,CAAC;EAED,IAAIG,OAAO,EAAE,oBAAOxB,KAAA,CAAA6E,aAAA,cAAK,YAAe,CAAC;EAEzC,MAAMC,YAAY,GAAG5D,UAAU,IAAIS,IAAI;EACvC,MAAMoD,iBAAiB,GAAGzB,oBAAoB,CAACwB,YAAY,CAAC;EAE5D,OAAO,CAACtD,OAAO,gBACbxB,KAAA,CAAA6E,aAAA,CAAA7E,KAAA,CAAAgF,QAAA,QACG,CAAC,CAACrD,IAAI,iBACL3B,KAAA,CAAA6E,aAAA,CAACrE,WAAW;IACVmB,IAAI,EAAEoD,iBAAkB;IACxBxC,gBAAgB,EAAEA,gBAAiB;IACnC0C,gBAAgB,EAAEA,CAAA,KAAM5D,yBAAyB,CAAC,IAAI,CAAE;IACxD6D,WAAW;IACXnE,gBAAgB,EAAEA;EAAiB,CACpC,CACF,EACAK,sBAAsB,iBACrBpB,KAAA,CAAA6E,aAAA;IAAKM,SAAS,EAAC;EAA2B,gBACxCnF,KAAA,CAAA6E,aAAA,CAACpE,eAAe;IACd2E,OAAO,EAAEA,CAAA,KAAM/D,yBAAyB,CAAC,KAAK,CAAE;IAChD6C,qBAAqB,EAAEA,qBAAsB;IAC7CmB,YAAY;IACZvE,MAAM,EAAEA,MAAO;IACfwE,QAAQ,EAAE3D,IAAI,IAAIA,IAAI,CAAC2D,QAAS;IAChCC,gBAAgB,EAAEA,CAAA,KAAM,CAAC;EAAE,CAC5B,CACE,CAEP,CAAC,gBAEHvF,KAAA,CAAA6E,aAAA,cAAK,YAAe,CACrB;AACH,CAAC;AAEDlE,aAAa,CAAC6E,SAAS,GAAG;EACxB1E,MAAM,EAAEX,SAAS,CAACsF,MAAM,CAACC,UAAU;EACnC9E,QAAQ,EAAET,SAAS,CAACwF,IAAI,CAACD,UAAU;EACnC7E,sBAAsB,EAAEV,SAAS,CAACwF,IAAI,CAACD,UAAU;EACjD3E,gBAAgB,EAAEZ,SAAS,CAACyF,IAAI;EAChC5E,WAAW,EAAEb,SAAS,CAAC0F;AACzB,CAAC;AAEDlF,aAAa,CAACmF,YAAY,GAAG;EAC3B/E,gBAAgB,EAAE,KAAK;EACvBC,WAAW,EAAE;AACf,CAAC;AAED,eAAeL,aAAa","ignoreList":[]}