@blaze-cms/plugin-media-ui 0.146.0-node18-core-styles-tooltips.45 → 0.146.0-node18-tooltips.38
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.
- package/CHANGELOG.md +21 -66
- package/lib/components/EditMediaFile/EditMediaFile.js +2 -2
- package/lib/components/EditMediaFile/EditMediaFile.js.map +1 -1
- package/lib/components/EditorAdapter/EditorAdapter.js +12 -1
- package/lib/components/EditorAdapter/EditorAdapter.js.map +1 -1
- package/lib-es/components/CardMedia/CardMedia.js +233 -0
- package/lib-es/components/CardMedia/CardMedia.js.map +1 -0
- package/lib-es/components/CardMedia/index.js +3 -0
- package/lib-es/components/CardMedia/index.js.map +1 -0
- package/lib-es/components/EditMediaFile/EditMediaFile.js +187 -0
- package/lib-es/components/EditMediaFile/EditMediaFile.js.map +1 -0
- package/lib-es/components/EditMediaFile/EditMediaFilePage.js +109 -0
- package/lib-es/components/EditMediaFile/EditMediaFilePage.js.map +1 -0
- package/lib-es/components/EditMediaFile/index.js +3 -0
- package/lib-es/components/EditMediaFile/index.js.map +1 -0
- package/lib-es/components/EditorAdapter/EditorAdapter.js +59 -0
- package/lib-es/components/EditorAdapter/EditorAdapter.js.map +1 -0
- package/lib-es/components/EditorAdapter/index.js +3 -0
- package/lib-es/components/EditorAdapter/index.js.map +1 -0
- package/lib-es/components/FileList/FilesListContext/index.js +4 -0
- package/lib-es/components/FileList/FilesListContext/index.js.map +1 -0
- package/lib-es/components/FileList/FilesListProvider/index.js +36 -0
- package/lib-es/components/FileList/FilesListProvider/index.js.map +1 -0
- package/lib-es/components/FileList/useFileList/index.js +5 -0
- package/lib-es/components/FileList/useFileList/index.js.map +1 -0
- package/lib-es/components/FileList/useGetFiles/getFiles.js +179 -0
- package/lib-es/components/FileList/useGetFiles/getFiles.js.map +1 -0
- package/lib-es/components/FileList/useGetFiles/index.js +3 -0
- package/lib-es/components/FileList/useGetFiles/index.js.map +1 -0
- package/lib-es/components/FileList/useGetFiles/useGetFiles.js +114 -0
- package/lib-es/components/FileList/useGetFiles/useGetFiles.js.map +1 -0
- package/lib-es/components/FileList/useGetFilesList/getCounters.js +11 -0
- package/lib-es/components/FileList/useGetFilesList/getCounters.js.map +1 -0
- package/lib-es/components/FileList/useGetFilesList/index.js +3 -0
- package/lib-es/components/FileList/useGetFilesList/index.js.map +1 -0
- package/lib-es/components/FileList/useGetFilesList/useGetFilesList.js +172 -0
- package/lib-es/components/FileList/useGetFilesList/useGetFilesList.js.map +1 -0
- package/lib-es/components/FilePreview/Actions/index.js +38 -0
- package/lib-es/components/FilePreview/Actions/index.js.map +1 -0
- package/lib-es/components/FilePreview/Image/Image.js +40 -0
- package/lib-es/components/FilePreview/Image/Image.js.map +1 -0
- package/lib-es/components/FilePreview/Image/RawImage.js +31 -0
- package/lib-es/components/FilePreview/Image/RawImage.js.map +1 -0
- package/lib-es/components/FilePreview/Image/imageSchema.js +53 -0
- package/lib-es/components/FilePreview/Image/imageSchema.js.map +1 -0
- package/lib-es/components/FilePreview/Image/index.js +12 -0
- package/lib-es/components/FilePreview/Image/index.js.map +1 -0
- package/lib-es/components/FilePreview/ModalContext.js +3 -0
- package/lib-es/components/FilePreview/ModalContext.js.map +1 -0
- package/lib-es/components/FilePreview/PDF/PDF.js +49 -0
- package/lib-es/components/FilePreview/PDF/PDF.js.map +1 -0
- package/lib-es/components/FilePreview/PDF/RawPDF.js +33 -0
- package/lib-es/components/FilePreview/PDF/RawPDF.js.map +1 -0
- package/lib-es/components/FilePreview/PDF/index.js +12 -0
- package/lib-es/components/FilePreview/PDF/index.js.map +1 -0
- package/lib-es/components/FilePreview/PDF/schema.js +21 -0
- package/lib-es/components/FilePreview/PDF/schema.js.map +1 -0
- package/lib-es/components/FilePreview/get-preview.js +28 -0
- package/lib-es/components/FilePreview/get-preview.js.map +1 -0
- package/lib-es/components/FilePreview/index.js +104 -0
- package/lib-es/components/FilePreview/index.js.map +1 -0
- package/lib-es/components/FilePreview/previewDefault/PreviewDefault.js +41 -0
- package/lib-es/components/FilePreview/previewDefault/PreviewDefault.js.map +1 -0
- package/lib-es/components/FilePreview/previewDefault/RawPreviewDefault.js +39 -0
- package/lib-es/components/FilePreview/previewDefault/RawPreviewDefault.js.map +1 -0
- package/lib-es/components/FilePreview/previewDefault/icons/DefaultIcon.js +121 -0
- package/lib-es/components/FilePreview/previewDefault/icons/DefaultIcon.js.map +1 -0
- package/lib-es/components/FilePreview/previewDefault/icons/index.js +3 -0
- package/lib-es/components/FilePreview/previewDefault/icons/index.js.map +1 -0
- package/lib-es/components/FilePreview/previewDefault/index.js +12 -0
- package/lib-es/components/FilePreview/previewDefault/index.js.map +1 -0
- package/lib-es/components/FilePreview/previewDefault/previewDefaultSchema.js +25 -0
- package/lib-es/components/FilePreview/previewDefault/previewDefaultSchema.js.map +1 -0
- package/lib-es/components/FilePreviewReadOnly/FileList.js +18 -0
- package/lib-es/components/FilePreviewReadOnly/FileList.js.map +1 -0
- package/lib-es/components/FilePreviewReadOnly/FilePreviewList.js +22 -0
- package/lib-es/components/FilePreviewReadOnly/FilePreviewList.js.map +1 -0
- package/lib-es/components/FilePreviewReadOnly/FilePreviewReadOnly.js +68 -0
- package/lib-es/components/FilePreviewReadOnly/FilePreviewReadOnly.js.map +1 -0
- package/lib-es/components/FilePreviewReadOnly/index.js +3 -0
- package/lib-es/components/FilePreviewReadOnly/index.js.map +1 -0
- package/lib-es/components/FilePreviewReadOnly/mappers/format-initial-value.js +11 -0
- package/lib-es/components/FilePreviewReadOnly/mappers/format-initial-value.js.map +1 -0
- package/lib-es/components/FilePreviewReadOnly/mappers/index.js +3 -0
- package/lib-es/components/FilePreviewReadOnly/mappers/index.js.map +1 -0
- package/lib-es/components/FileUploadAdapter/FileList.js +52 -0
- package/lib-es/components/FileUploadAdapter/FileList.js.map +1 -0
- package/lib-es/components/FileUploadAdapter/FilePreviewList.js +22 -0
- package/lib-es/components/FileUploadAdapter/FilePreviewList.js.map +1 -0
- package/lib-es/components/FileUploadAdapter/FileReorderList.js +32 -0
- package/lib-es/components/FileUploadAdapter/FileReorderList.js.map +1 -0
- package/lib-es/components/FileUploadAdapter/FileReorderListItem.js +24 -0
- package/lib-es/components/FileUploadAdapter/FileReorderListItem.js.map +1 -0
- package/lib-es/components/FileUploadAdapter/FileUploadAdapter.js +391 -0
- package/lib-es/components/FileUploadAdapter/FileUploadAdapter.js.map +1 -0
- package/lib-es/components/FileUploadAdapter/index.js +3 -0
- package/lib-es/components/FileUploadAdapter/index.js.map +1 -0
- package/lib-es/components/FileUploadAdapter/mappers/format-initial-value.js +11 -0
- package/lib-es/components/FileUploadAdapter/mappers/format-initial-value.js.map +1 -0
- package/lib-es/components/FileUploadAdapter/mappers/get-button-text.js +11 -0
- package/lib-es/components/FileUploadAdapter/mappers/get-button-text.js.map +1 -0
- package/lib-es/components/FileUploadAdapter/mappers/get-format.js +12 -0
- package/lib-es/components/FileUploadAdapter/mappers/get-format.js.map +1 -0
- package/lib-es/components/FileUploadAdapter/mappers/get-number-files-pending-to-fetch.js +7 -0
- package/lib-es/components/FileUploadAdapter/mappers/get-number-files-pending-to-fetch.js.map +1 -0
- package/lib-es/components/FileUploadAdapter/mappers/index.js +8 -0
- package/lib-es/components/FileUploadAdapter/mappers/index.js.map +1 -0
- package/lib-es/components/FileUploadAdapter/mappers/is-unselecting.js +2 -0
- package/lib-es/components/FileUploadAdapter/mappers/is-unselecting.js.map +1 -0
- package/lib-es/components/FileUploadAdapter/mappers/transform-to-array.js +2 -0
- package/lib-es/components/FileUploadAdapter/mappers/transform-to-array.js.map +1 -0
- package/lib-es/components/FileUploadAdapter/useLimit.js +13 -0
- package/lib-es/components/FileUploadAdapter/useLimit.js.map +1 -0
- package/lib-es/components/FileUploadModal/FileUploadModal.js +178 -0
- package/lib-es/components/FileUploadModal/FileUploadModal.js.map +1 -0
- package/lib-es/components/FileUploadModal/index.js +3 -0
- package/lib-es/components/FileUploadModal/index.js.map +1 -0
- package/lib-es/components/FilterPanel/FilterPanel.js +135 -0
- package/lib-es/components/FilterPanel/FilterPanel.js.map +1 -0
- package/lib-es/components/FilterPanel/index.js +3 -0
- package/lib-es/components/FilterPanel/index.js.map +1 -0
- package/lib-es/components/ListingContainer/Listing/Listing.js +70 -0
- package/lib-es/components/ListingContainer/Listing/Listing.js.map +1 -0
- package/lib-es/components/ListingContainer/Listing/MediaListing/MediaFileList/MediaFileList.js +153 -0
- package/lib-es/components/ListingContainer/Listing/MediaListing/MediaFileList/MediaFileList.js.map +1 -0
- package/lib-es/components/ListingContainer/Listing/MediaListing/MediaFileList/index.js +3 -0
- package/lib-es/components/ListingContainer/Listing/MediaListing/MediaFileList/index.js.map +1 -0
- package/lib-es/components/ListingContainer/Listing/MediaListing/MediaListing.js +33 -0
- package/lib-es/components/ListingContainer/Listing/MediaListing/MediaListing.js.map +1 -0
- package/lib-es/components/ListingContainer/Listing/MediaListing/index.js +3 -0
- package/lib-es/components/ListingContainer/Listing/MediaListing/index.js.map +1 -0
- package/lib-es/components/ListingContainer/Listing/index.js +3 -0
- package/lib-es/components/ListingContainer/Listing/index.js.map +1 -0
- package/lib-es/components/ListingContainer/ListingContainer.js +115 -0
- package/lib-es/components/ListingContainer/ListingContainer.js.map +1 -0
- package/lib-es/components/ListingContainer/index.js +3 -0
- package/lib-es/components/ListingContainer/index.js.map +1 -0
- package/lib-es/components/ListingContainer/mappers/exist-previous.js +3 -0
- package/lib-es/components/ListingContainer/mappers/exist-previous.js.map +1 -0
- package/lib-es/components/ListingContainer/mappers/index.js +3 -0
- package/lib-es/components/ListingContainer/mappers/index.js.map +1 -0
- package/lib-es/components/MediaListing.js +29 -0
- package/lib-es/components/MediaListing.js.map +1 -0
- package/lib-es/constants.js +36 -0
- package/lib-es/constants.js.map +1 -0
- package/lib-es/icons/MediaLibraryIcon.js +70 -0
- package/lib-es/icons/MediaLibraryIcon.js.map +1 -0
- package/lib-es/icons/index.js +3 -0
- package/lib-es/icons/index.js.map +1 -0
- package/lib-es/index.js +61 -0
- package/lib-es/index.js.map +1 -0
- package/lib-es/utils/available-filters/available-filters.js +26 -0
- package/lib-es/utils/available-filters/available-filters.js.map +1 -0
- package/lib-es/utils/bustUrl.js +7 -0
- package/lib-es/utils/bustUrl.js.map +1 -0
- package/lib-es/utils/media-context/index.js +4 -0
- package/lib-es/utils/media-context/index.js.map +1 -0
- package/lib-es/utils/media-context/media-context.js +6 -0
- package/lib-es/utils/media-context/media-context.js.map +1 -0
- package/lib-es/utils/media-context/useMediaContext.js +4 -0
- package/lib-es/utils/media-context/useMediaContext.js.map +1 -0
- package/package.json +9 -8
- package/src/components/EditMediaFile/EditMediaFile.js +3 -1
- package/src/components/EditorAdapter/EditorAdapter.js +12 -0
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
2
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
+
const _excluded = ["__typename"];
|
|
4
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
5
|
+
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; }
|
|
6
|
+
import React, { useState, useEffect } from 'react';
|
|
7
|
+
import PropTypes from 'prop-types';
|
|
8
|
+
import { getQuery } from '@blaze-cms/admin-ui-utils';
|
|
9
|
+
import { useQuery } from '@apollo/client';
|
|
10
|
+
import { useToasts } from '@blaze-react/toaster';
|
|
11
|
+
import FilePreview from '../FilePreview';
|
|
12
|
+
import FileUploadModal from '../FileUploadModal';
|
|
13
|
+
import { STORE_KEY, NAME } from '../../constants';
|
|
14
|
+
const EditMediaFile = ({
|
|
15
|
+
onChange,
|
|
16
|
+
handleSaveButtonStatus,
|
|
17
|
+
fileId,
|
|
18
|
+
showChangeButton,
|
|
19
|
+
fileUpdated
|
|
20
|
+
}) => {
|
|
21
|
+
const [formValues, setFormValues] = useState(null);
|
|
22
|
+
const [displayFileUploadModal, setDisplayFileUploadModal] = useState(false);
|
|
23
|
+
const {
|
|
24
|
+
addToast
|
|
25
|
+
} = useToasts();
|
|
26
|
+
const fileQuery = getQuery('GET_FILE_BY_ID');
|
|
27
|
+
const {
|
|
28
|
+
loading,
|
|
29
|
+
data: {
|
|
30
|
+
file
|
|
31
|
+
} = {},
|
|
32
|
+
refetch: refetchFile
|
|
33
|
+
} = useQuery(fileQuery, {
|
|
34
|
+
variables: {
|
|
35
|
+
id: fileId
|
|
36
|
+
},
|
|
37
|
+
fetchPolicy: 'cache-and-network'
|
|
38
|
+
});
|
|
39
|
+
const fileStoresType = getQuery('GET_FILE_STORES');
|
|
40
|
+
const {
|
|
41
|
+
data: {
|
|
42
|
+
getFileStores: storeType = []
|
|
43
|
+
} = {}
|
|
44
|
+
} = useQuery(fileStoresType, {
|
|
45
|
+
variables: {
|
|
46
|
+
visibleInAdmin: true
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
useEffect(() => {
|
|
50
|
+
if (file) {
|
|
51
|
+
setFormValues(prevFormValues => {
|
|
52
|
+
if (!prevFormValues || prevFormValues.updated !== file.updated) {
|
|
53
|
+
return file;
|
|
54
|
+
}
|
|
55
|
+
return prevFormValues;
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}, [file]);
|
|
59
|
+
useEffect(() => {
|
|
60
|
+
if (fileUpdated && fileUpdated.updated) {
|
|
61
|
+
setFormValues(fileUpdated);
|
|
62
|
+
}
|
|
63
|
+
}, [fileUpdated]);
|
|
64
|
+
const handleFormChange = ({
|
|
65
|
+
isValid,
|
|
66
|
+
isNewValueSet,
|
|
67
|
+
valuesChecked
|
|
68
|
+
}) => {
|
|
69
|
+
const baseFile = formValues || file;
|
|
70
|
+
const valuesCheckedWithoutName = valuesChecked.filter(({
|
|
71
|
+
id
|
|
72
|
+
}) => id !== NAME && id !== STORE_KEY);
|
|
73
|
+
const dataValues = valuesCheckedWithoutName.reduce((acc, {
|
|
74
|
+
id,
|
|
75
|
+
value
|
|
76
|
+
}) => {
|
|
77
|
+
acc[id] = value;
|
|
78
|
+
return acc;
|
|
79
|
+
}, {});
|
|
80
|
+
const {
|
|
81
|
+
value: newFileName
|
|
82
|
+
} = valuesChecked.find(({
|
|
83
|
+
id
|
|
84
|
+
}) => id === NAME) || {};
|
|
85
|
+
const {
|
|
86
|
+
value: storeKey
|
|
87
|
+
} = valuesChecked.find(({
|
|
88
|
+
id
|
|
89
|
+
}) => id === STORE_KEY) || {};
|
|
90
|
+
const shouldEnableSaveButton = isNewValueSet && isValid;
|
|
91
|
+
handleSaveButtonStatus(shouldEnableSaveButton);
|
|
92
|
+
const updatedFile = _objectSpread(_objectSpread({}, baseFile), {}, {
|
|
93
|
+
name: newFileName || baseFile.name,
|
|
94
|
+
storeKey: storeKey || baseFile.storeKey,
|
|
95
|
+
data: _objectSpread(_objectSpread({}, baseFile.data || {}), dataValues)
|
|
96
|
+
});
|
|
97
|
+
setFormValues(updatedFile);
|
|
98
|
+
// Strip GraphQL metadata field __typename before passing data to onChange.
|
|
99
|
+
const _ref = updatedFile.data || {},
|
|
100
|
+
{
|
|
101
|
+
__typename
|
|
102
|
+
} = _ref,
|
|
103
|
+
cleanData = _objectWithoutProperties(_ref, _excluded);
|
|
104
|
+
onChange({
|
|
105
|
+
id: updatedFile.id,
|
|
106
|
+
name: updatedFile.name,
|
|
107
|
+
data: cleanData
|
|
108
|
+
});
|
|
109
|
+
};
|
|
110
|
+
const getFileWithStoreType = sourceFile => {
|
|
111
|
+
const base = sourceFile || file;
|
|
112
|
+
if (storeType && base) {
|
|
113
|
+
const storeOptions = storeType.map(type => [type.key, type.name]);
|
|
114
|
+
const defaultStore = storeType.find(type => type.isDefault) || null;
|
|
115
|
+
return _objectSpread(_objectSpread({}, base), {}, {
|
|
116
|
+
store: {
|
|
117
|
+
defaultStore,
|
|
118
|
+
storeOptions
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
return base;
|
|
123
|
+
};
|
|
124
|
+
const closeModalAndSetValue = async (isSaving, values, toastMessage) => {
|
|
125
|
+
if (toastMessage) {
|
|
126
|
+
addToast(toastMessage, {
|
|
127
|
+
appearance: 'success',
|
|
128
|
+
autoDismiss: true
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
if (values) {
|
|
132
|
+
const updated = values.id === fileId ? values : _objectSpread(_objectSpread(_objectSpread({}, formValues || file), values), {}, {
|
|
133
|
+
url: values.url || (formValues || file).url
|
|
134
|
+
});
|
|
135
|
+
setFormValues(updated);
|
|
136
|
+
onChange(updated);
|
|
137
|
+
handleSaveButtonStatus(true);
|
|
138
|
+
} else {
|
|
139
|
+
const {
|
|
140
|
+
data: {
|
|
141
|
+
file: refreshedFile
|
|
142
|
+
} = {}
|
|
143
|
+
} = await refetchFile({
|
|
144
|
+
id: fileId,
|
|
145
|
+
timestamp: Date.now()
|
|
146
|
+
});
|
|
147
|
+
if (refreshedFile) {
|
|
148
|
+
setFormValues(refreshedFile);
|
|
149
|
+
onChange(refreshedFile);
|
|
150
|
+
handleSaveButtonStatus(true);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
setDisplayFileUploadModal(false);
|
|
154
|
+
};
|
|
155
|
+
if (loading) return /*#__PURE__*/React.createElement("div", null, "loading...");
|
|
156
|
+
const fileToRender = formValues || file;
|
|
157
|
+
const fileWithStoreType = getFileWithStoreType(fileToRender);
|
|
158
|
+
return !loading ? /*#__PURE__*/React.createElement(React.Fragment, null, !!file && /*#__PURE__*/React.createElement(FilePreview, {
|
|
159
|
+
file: fileWithStoreType,
|
|
160
|
+
handleFormChange: handleFormChange,
|
|
161
|
+
handleChangeFile: () => setDisplayFileUploadModal(true),
|
|
162
|
+
displayForm: true,
|
|
163
|
+
showChangeButton: showChangeButton
|
|
164
|
+
}), displayFileUploadModal && /*#__PURE__*/React.createElement("div", {
|
|
165
|
+
className: "file-upload-modal-wrapper"
|
|
166
|
+
}, /*#__PURE__*/React.createElement(FileUploadModal, {
|
|
167
|
+
onClose: () => setDisplayFileUploadModal(false),
|
|
168
|
+
closeModalAndSetValue: closeModalAndSetValue,
|
|
169
|
+
simpleLayout: true,
|
|
170
|
+
fileId: fileId,
|
|
171
|
+
storeKey: file && file.storeKey,
|
|
172
|
+
getSelectedFiles: () => {}
|
|
173
|
+
}))) : /*#__PURE__*/React.createElement("div", null, "loading...");
|
|
174
|
+
};
|
|
175
|
+
EditMediaFile.propTypes = {
|
|
176
|
+
fileId: PropTypes.string.isRequired,
|
|
177
|
+
onChange: PropTypes.func.isRequired,
|
|
178
|
+
handleSaveButtonStatus: PropTypes.func.isRequired,
|
|
179
|
+
showChangeButton: PropTypes.bool,
|
|
180
|
+
fileUpdated: PropTypes.object
|
|
181
|
+
};
|
|
182
|
+
EditMediaFile.defaultProps = {
|
|
183
|
+
showChangeButton: false,
|
|
184
|
+
fileUpdated: null
|
|
185
|
+
};
|
|
186
|
+
export default EditMediaFile;
|
|
187
|
+
//# sourceMappingURL=EditMediaFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EditMediaFile.js","names":["React","useState","useEffect","PropTypes","getQuery","useQuery","useToasts","FilePreview","FileUploadModal","STORE_KEY","NAME","EditMediaFile","onChange","handleSaveButtonStatus","fileId","showChangeButton","fileUpdated","formValues","setFormValues","displayFileUploadModal","setDisplayFileUploadModal","addToast","fileQuery","loading","data","file","refetch","refetchFile","variables","id","fetchPolicy","fileStoresType","getFileStores","storeType","visibleInAdmin","prevFormValues","updated","handleFormChange","isValid","isNewValueSet","valuesChecked","baseFile","valuesCheckedWithoutName","filter","dataValues","reduce","acc","value","newFileName","find","storeKey","shouldEnableSaveButton","updatedFile","_objectSpread","name","_ref","__typename","cleanData","_objectWithoutProperties","_excluded","getFileWithStoreType","sourceFile","base","storeOptions","map","type","key","defaultStore","isDefault","store","closeModalAndSetValue","isSaving","values","toastMessage","appearance","autoDismiss","url","refreshedFile","timestamp","Date","now","createElement","fileToRender","fileWithStoreType","Fragment","handleChangeFile","displayForm","className","onClose","simpleLayout","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 } 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 { STORE_KEY, NAME } from '../../constants';\n\nconst EditMediaFile = ({\n onChange,\n handleSaveButtonStatus,\n fileId,\n showChangeButton,\n fileUpdated\n}) => {\n const [formValues, setFormValues] = useState(null);\n const [displayFileUploadModal, setDisplayFileUploadModal] = useState(false);\n const { addToast } = useToasts();\n\n const fileQuery = getQuery('GET_FILE_BY_ID');\n const {\n loading,\n data: { 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 const valuesCheckedWithoutName = valuesChecked.filter(\n ({ id }) => id !== NAME && id !== STORE_KEY\n );\n\n const dataValues = valuesCheckedWithoutName.reduce((acc, { id, value }) => {\n acc[id] = value;\n return acc;\n }, {});\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(shouldEnableSaveButton);\n\n const updatedFile = {\n ...baseFile,\n name: newFileName || baseFile.name,\n storeKey: storeKey || baseFile.storeKey,\n data: { ...(baseFile.data || {}), ...dataValues }\n };\n\n setFormValues(updatedFile);\n // Strip GraphQL metadata field __typename before passing data to onChange.\n const { __typename, ...cleanData } = updatedFile.data || {};\n onChange({ id: updatedFile.id, name: updatedFile.name, data: cleanData });\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":"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","ignoreList":[]}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { withRouter } from 'react-router-dom';
|
|
3
|
+
import PropTypes from 'prop-types';
|
|
4
|
+
import Button from '@blaze-react/button';
|
|
5
|
+
import { useApolloClient } from '@apollo/client';
|
|
6
|
+
import { getQuery, getMutation } from '@blaze-cms/admin-ui-utils';
|
|
7
|
+
import { useToasts } from '@blaze-react/toaster';
|
|
8
|
+
import EditMediaFile from './EditMediaFile';
|
|
9
|
+
const EditMediaFilePage = ({
|
|
10
|
+
match,
|
|
11
|
+
history
|
|
12
|
+
}) => {
|
|
13
|
+
const [shouldEnableSaveButton, setShouldEnableSaveButton] = useState(false);
|
|
14
|
+
const [file, setFile] = useState(null);
|
|
15
|
+
const client = useApolloClient();
|
|
16
|
+
const {
|
|
17
|
+
addToast
|
|
18
|
+
} = useToasts();
|
|
19
|
+
const handleFileChange = values => setFile(values);
|
|
20
|
+
const handleSaveButtonStatus = value => {
|
|
21
|
+
setShouldEnableSaveButton(value);
|
|
22
|
+
};
|
|
23
|
+
const handleFormSave = async () => {
|
|
24
|
+
if (!file) {
|
|
25
|
+
addToast('No file data to update', {
|
|
26
|
+
appearance: 'error',
|
|
27
|
+
autoDismiss: true
|
|
28
|
+
});
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
const inputData = {
|
|
33
|
+
id: file.id,
|
|
34
|
+
name: file.name,
|
|
35
|
+
data: file.data,
|
|
36
|
+
storeKey: file.storeKey
|
|
37
|
+
};
|
|
38
|
+
const {
|
|
39
|
+
data: {
|
|
40
|
+
updateFile: updatedFile
|
|
41
|
+
}
|
|
42
|
+
} = await client.mutate({
|
|
43
|
+
mutation: getMutation('UPDATE_FILE'),
|
|
44
|
+
variables: {
|
|
45
|
+
input: inputData
|
|
46
|
+
},
|
|
47
|
+
update(cache, {
|
|
48
|
+
data: {
|
|
49
|
+
updateFile: fileUpdated
|
|
50
|
+
}
|
|
51
|
+
}) {
|
|
52
|
+
try {
|
|
53
|
+
cache.writeQuery({
|
|
54
|
+
query: getQuery('GET_FILE_BY_ID'),
|
|
55
|
+
variables: {
|
|
56
|
+
id: match.params.fileId
|
|
57
|
+
},
|
|
58
|
+
data: {
|
|
59
|
+
file: fileUpdated.result
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
} catch (e) {
|
|
63
|
+
console.error(e); //eslint-disable-line
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
setFile(updatedFile.result);
|
|
68
|
+
addToast(`File: ${file.name} has been updated`, {
|
|
69
|
+
appearance: 'success',
|
|
70
|
+
autoDismiss: true
|
|
71
|
+
});
|
|
72
|
+
} catch (e) {
|
|
73
|
+
addToast(`File: ${file.name} has not been updated`, {
|
|
74
|
+
appearance: 'error',
|
|
75
|
+
autoDismiss: true
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
setShouldEnableSaveButton(false);
|
|
79
|
+
};
|
|
80
|
+
const pushBack = () => history.push('/media');
|
|
81
|
+
const buttonModifiers = shouldEnableSaveButton ? [] : ['disabled'];
|
|
82
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
83
|
+
className: "page"
|
|
84
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
85
|
+
className: "page__content"
|
|
86
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
87
|
+
className: "page__content__mediaWrapper"
|
|
88
|
+
}, /*#__PURE__*/React.createElement(EditMediaFile, {
|
|
89
|
+
onChange: handleFileChange,
|
|
90
|
+
fileId: match.params.fileId,
|
|
91
|
+
handleSaveButtonStatus: handleSaveButtonStatus,
|
|
92
|
+
handleFormSave: handleFormSave,
|
|
93
|
+
showChangeButton: true,
|
|
94
|
+
fileUpdated: file
|
|
95
|
+
}), /*#__PURE__*/React.createElement("div", {
|
|
96
|
+
className: "page__content__mediaWrapperActions"
|
|
97
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
98
|
+
onClick: pushBack
|
|
99
|
+
}, "Cancel"), /*#__PURE__*/React.createElement(Button, {
|
|
100
|
+
onClick: handleFormSave,
|
|
101
|
+
modifiers: buttonModifiers
|
|
102
|
+
}, "Apply")))));
|
|
103
|
+
};
|
|
104
|
+
EditMediaFilePage.propTypes = {
|
|
105
|
+
match: PropTypes.object.isRequired,
|
|
106
|
+
history: PropTypes.object.isRequired
|
|
107
|
+
};
|
|
108
|
+
export default withRouter(EditMediaFilePage);
|
|
109
|
+
//# sourceMappingURL=EditMediaFilePage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EditMediaFilePage.js","names":["React","useState","withRouter","PropTypes","Button","useApolloClient","getQuery","getMutation","useToasts","EditMediaFile","EditMediaFilePage","match","history","shouldEnableSaveButton","setShouldEnableSaveButton","file","setFile","client","addToast","handleFileChange","values","handleSaveButtonStatus","value","handleFormSave","appearance","autoDismiss","inputData","id","name","data","storeKey","updateFile","updatedFile","mutate","mutation","variables","input","update","cache","fileUpdated","writeQuery","query","params","fileId","result","e","console","error","pushBack","push","buttonModifiers","createElement","className","onChange","showChangeButton","onClick","modifiers","propTypes","object","isRequired"],"sources":["../../../src/components/EditMediaFile/EditMediaFilePage.js"],"sourcesContent":["import React, { useState } from 'react';\nimport { withRouter } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport Button from '@blaze-react/button';\nimport { useApolloClient } from '@apollo/client';\nimport { getQuery, getMutation } from '@blaze-cms/admin-ui-utils';\nimport { useToasts } from '@blaze-react/toaster';\nimport EditMediaFile from './EditMediaFile';\n\nconst EditMediaFilePage = ({ match, history }) => {\n const [shouldEnableSaveButton, setShouldEnableSaveButton] = useState(false);\n const [file, setFile] = useState(null);\n const client = useApolloClient();\n const { addToast } = useToasts();\n\n const handleFileChange = values => setFile(values);\n\n const handleSaveButtonStatus = value => {\n setShouldEnableSaveButton(value);\n };\n\n const handleFormSave = async () => {\n if (!file) {\n addToast('No file data to update', {\n appearance: 'error',\n autoDismiss: true\n });\n return;\n }\n\n try {\n const inputData = {\n id: file.id,\n name: file.name,\n data: file.data,\n storeKey: file.storeKey\n };\n\n const {\n data: { updateFile: updatedFile }\n } = await client.mutate({\n mutation: getMutation('UPDATE_FILE'),\n variables: {\n input: inputData\n },\n update(cache, { data: { updateFile: fileUpdated } }) {\n try {\n cache.writeQuery({\n query: getQuery('GET_FILE_BY_ID'),\n variables: { id: match.params.fileId },\n data: { file: fileUpdated.result }\n });\n } catch (e) {\n console.error(e); //eslint-disable-line\n }\n }\n });\n\n setFile(updatedFile.result);\n\n addToast(`File: ${file.name} has been updated`, {\n appearance: 'success',\n autoDismiss: true\n });\n } catch (e) {\n addToast(`File: ${file.name} has not been updated`, {\n appearance: 'error',\n autoDismiss: true\n });\n }\n setShouldEnableSaveButton(false);\n };\n\n const pushBack = () => history.push('/media');\n\n const buttonModifiers = shouldEnableSaveButton ? [] : ['disabled'];\n\n return (\n <div className=\"page\">\n <div className=\"page__content\">\n <div className=\"page__content__mediaWrapper\">\n <EditMediaFile\n onChange={handleFileChange}\n fileId={match.params.fileId}\n handleSaveButtonStatus={handleSaveButtonStatus}\n handleFormSave={handleFormSave}\n showChangeButton\n fileUpdated={file}\n />\n <div className=\"page__content__mediaWrapperActions\">\n <Button onClick={pushBack}>Cancel</Button>\n <Button onClick={handleFormSave} modifiers={buttonModifiers}>\n Apply\n </Button>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nEditMediaFilePage.propTypes = {\n match: PropTypes.object.isRequired,\n history: PropTypes.object.isRequired\n};\n\nexport default withRouter(EditMediaFilePage);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["EditMediaFile"],"sources":["../../../src/components/EditMediaFile/index.js"],"sourcesContent":["import EditMediaFile from './EditMediaFile';\n\nexport default EditMediaFile;\n"],"mappings":"AAAA,OAAOA,aAAa,MAAM,iBAAiB;AAE3C,eAAeA,aAAa","ignoreList":[]}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
2
|
+
const _excluded = ["id", "value", "onChange", "error", "validationMessage", "label", "tooltip"];
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import DraftEditor from '@blaze-react/drafteditor';
|
|
5
|
+
import PropTypes from 'prop-types';
|
|
6
|
+
import Tooltip from '@blaze-react/tooltip';
|
|
7
|
+
const customStyleMap = {
|
|
8
|
+
SUPERSCRIPT: {
|
|
9
|
+
fontSize: '0.75em',
|
|
10
|
+
verticalAlign: 'super'
|
|
11
|
+
},
|
|
12
|
+
SUBSCRIPT: {
|
|
13
|
+
fontSize: '0.75em',
|
|
14
|
+
verticalAlign: 'sub'
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
const DraftEditorAdapter = _ref => {
|
|
18
|
+
let {
|
|
19
|
+
id,
|
|
20
|
+
value,
|
|
21
|
+
onChange,
|
|
22
|
+
error,
|
|
23
|
+
validationMessage,
|
|
24
|
+
label,
|
|
25
|
+
tooltip
|
|
26
|
+
} = _ref,
|
|
27
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
28
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
29
|
+
className: "form-field form-field--full-width"
|
|
30
|
+
}, /*#__PURE__*/React.createElement("label", null, /*#__PURE__*/React.createElement(Tooltip, {
|
|
31
|
+
tooltipContent: tooltip
|
|
32
|
+
})), /*#__PURE__*/React.createElement(DraftEditor, {
|
|
33
|
+
name: id,
|
|
34
|
+
value: value,
|
|
35
|
+
onChange: onChange,
|
|
36
|
+
error: error,
|
|
37
|
+
validationMessage: validationMessage,
|
|
38
|
+
tooltip: {
|
|
39
|
+
tooltipContent: tooltip
|
|
40
|
+
},
|
|
41
|
+
customStyleMap: customStyleMap
|
|
42
|
+
}));
|
|
43
|
+
};
|
|
44
|
+
DraftEditorAdapter.propTypes = {
|
|
45
|
+
id: PropTypes.string.isRequired,
|
|
46
|
+
value: PropTypes.string.isRequired,
|
|
47
|
+
onChange: PropTypes.func.isRequired,
|
|
48
|
+
error: PropTypes.bool,
|
|
49
|
+
validationMessage: PropTypes.string,
|
|
50
|
+
label: PropTypes.string.isRequired,
|
|
51
|
+
tooltip: PropTypes.string
|
|
52
|
+
};
|
|
53
|
+
DraftEditorAdapter.defaultProps = {
|
|
54
|
+
error: false,
|
|
55
|
+
validationMessage: undefined,
|
|
56
|
+
tooltip: ''
|
|
57
|
+
};
|
|
58
|
+
export default DraftEditorAdapter;
|
|
59
|
+
//# sourceMappingURL=EditorAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EditorAdapter.js","names":["React","DraftEditor","PropTypes","Tooltip","customStyleMap","SUPERSCRIPT","fontSize","verticalAlign","SUBSCRIPT","DraftEditorAdapter","_ref","id","value","onChange","error","validationMessage","label","tooltip","props","_objectWithoutProperties","_excluded","createElement","className","tooltipContent","name","propTypes","string","isRequired","func","bool","defaultProps","undefined"],"sources":["../../../src/components/EditorAdapter/EditorAdapter.js"],"sourcesContent":["import React from 'react';\nimport DraftEditor from '@blaze-react/drafteditor';\nimport PropTypes from 'prop-types';\nimport Tooltip from '@blaze-react/tooltip';\n\nconst customStyleMap = {\n SUPERSCRIPT: {\n fontSize: '0.75em',\n verticalAlign: 'super'\n },\n SUBSCRIPT: {\n fontSize: '0.75em',\n verticalAlign: 'sub'\n }\n};\n\nconst DraftEditorAdapter = ({\n id,\n value,\n onChange,\n error,\n validationMessage,\n label,\n tooltip,\n ...props\n}) => (\n <div className=\"form-field form-field--full-width\">\n <label>\n <Tooltip tooltipContent={tooltip} />\n </label>\n <DraftEditor\n name={id}\n value={value}\n onChange={onChange}\n error={error}\n validationMessage={validationMessage}\n tooltip={{ tooltipContent: tooltip }}\n customStyleMap={customStyleMap}\n />\n </div>\n);\n\nDraftEditorAdapter.propTypes = {\n id: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n error: PropTypes.bool,\n validationMessage: PropTypes.string,\n label: PropTypes.string.isRequired,\n tooltip: PropTypes.string\n};\n\nDraftEditorAdapter.defaultProps = {\n error: false,\n validationMessage: undefined,\n tooltip: ''\n};\n\nexport default DraftEditorAdapter;\n"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,WAAW,MAAM,0BAA0B;AAClD,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,OAAO,MAAM,sBAAsB;AAE1C,MAAMC,cAAc,GAAG;EACrBC,WAAW,EAAE;IACXC,QAAQ,EAAE,QAAQ;IAClBC,aAAa,EAAE;EACjB,CAAC;EACDC,SAAS,EAAE;IACTF,QAAQ,EAAE,QAAQ;IAClBC,aAAa,EAAE;EACjB;AACF,CAAC;AAED,MAAME,kBAAkB,GAAGC,IAAA;EAAA,IAAC;MAC1BC,EAAE;MACFC,KAAK;MACLC,QAAQ;MACRC,KAAK;MACLC,iBAAiB;MACjBC,KAAK;MACLC;IAEF,CAAC,GAAAP,IAAA;IADIQ,KAAK,GAAAC,wBAAA,CAAAT,IAAA,EAAAU,SAAA;EAAA,oBAERpB,KAAA,CAAAqB,aAAA;IAAKC,SAAS,EAAC;EAAmC,gBAChDtB,KAAA,CAAAqB,aAAA,6BACErB,KAAA,CAAAqB,aAAA,CAAClB,OAAO;IAACoB,cAAc,EAAEN;EAAQ,CAAE,CAC9B,CAAC,eACRjB,KAAA,CAAAqB,aAAA,CAACpB,WAAW;IACVuB,IAAI,EAAEb,EAAG;IACTC,KAAK,EAAEA,KAAM;IACbC,QAAQ,EAAEA,QAAS;IACnBC,KAAK,EAAEA,KAAM;IACbC,iBAAiB,EAAEA,iBAAkB;IACrCE,OAAO,EAAE;MAAEM,cAAc,EAAEN;IAAQ,CAAE;IACrCb,cAAc,EAAEA;EAAe,CAChC,CACE,CAAC;AAAA,CACP;AAEDK,kBAAkB,CAACgB,SAAS,GAAG;EAC7Bd,EAAE,EAAET,SAAS,CAACwB,MAAM,CAACC,UAAU;EAC/Bf,KAAK,EAAEV,SAAS,CAACwB,MAAM,CAACC,UAAU;EAClCd,QAAQ,EAAEX,SAAS,CAAC0B,IAAI,CAACD,UAAU;EACnCb,KAAK,EAAEZ,SAAS,CAAC2B,IAAI;EACrBd,iBAAiB,EAAEb,SAAS,CAACwB,MAAM;EACnCV,KAAK,EAAEd,SAAS,CAACwB,MAAM,CAACC,UAAU;EAClCV,OAAO,EAAEf,SAAS,CAACwB;AACrB,CAAC;AAEDjB,kBAAkB,CAACqB,YAAY,GAAG;EAChChB,KAAK,EAAE,KAAK;EACZC,iBAAiB,EAAEgB,SAAS;EAC5Bd,OAAO,EAAE;AACX,CAAC;AAED,eAAeR,kBAAkB","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["EditorAdapter"],"sources":["../../../src/components/EditorAdapter/index.js"],"sourcesContent":["import EditorAdapter from './EditorAdapter';\n\nexport default EditorAdapter;\n"],"mappings":"AAAA,OAAOA,aAAa,MAAM,iBAAiB;AAE3C,eAAeA,aAAa","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","FilesListContext","createContext"],"sources":["../../../../src/components/FileList/FilesListContext/index.js"],"sourcesContent":["import React from 'react';\n\nconst FilesListContext = React.createContext({});\n\nexport default FilesListContext;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,MAAMC,gBAAgB,GAAGD,KAAK,CAACE,aAAa,CAAC,CAAC,CAAC,CAAC;AAEhD,eAAeD,gBAAgB","ignoreList":[]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import useGetFilesList from '../useGetFilesList/useGetFilesList';
|
|
4
|
+
import FilesListContext from '../FilesListContext';
|
|
5
|
+
const FilesListProvider = ({
|
|
6
|
+
children
|
|
7
|
+
}) => {
|
|
8
|
+
const [{
|
|
9
|
+
queryParams,
|
|
10
|
+
data,
|
|
11
|
+
loading
|
|
12
|
+
}, {
|
|
13
|
+
setQueryParams,
|
|
14
|
+
clearList,
|
|
15
|
+
removeFile,
|
|
16
|
+
addNewFile,
|
|
17
|
+
updateFile
|
|
18
|
+
}] = useGetFilesList();
|
|
19
|
+
return /*#__PURE__*/React.createElement(FilesListContext.Provider, {
|
|
20
|
+
value: {
|
|
21
|
+
queryParams,
|
|
22
|
+
data,
|
|
23
|
+
loading,
|
|
24
|
+
setQueryParams,
|
|
25
|
+
clearList,
|
|
26
|
+
removeFile,
|
|
27
|
+
addNewFile,
|
|
28
|
+
updateFile
|
|
29
|
+
}
|
|
30
|
+
}, children);
|
|
31
|
+
};
|
|
32
|
+
FilesListProvider.propTypes = {
|
|
33
|
+
children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired
|
|
34
|
+
};
|
|
35
|
+
export default FilesListProvider;
|
|
36
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","PropTypes","useGetFilesList","FilesListContext","FilesListProvider","children","queryParams","data","loading","setQueryParams","clearList","removeFile","addNewFile","updateFile","createElement","Provider","value","propTypes","oneOfType","arrayOf","node","isRequired"],"sources":["../../../../src/components/FileList/FilesListProvider/index.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport useGetFilesList from '../useGetFilesList/useGetFilesList';\nimport FilesListContext from '../FilesListContext';\n\nconst FilesListProvider = ({ children }) => {\n const [\n { queryParams, data, loading },\n { setQueryParams, clearList, removeFile, addNewFile, updateFile }\n ] = useGetFilesList();\n return (\n <FilesListContext.Provider\n value={{\n queryParams,\n data,\n loading,\n setQueryParams,\n clearList,\n removeFile,\n addNewFile,\n updateFile\n }}>\n {children}\n </FilesListContext.Provider>\n );\n};\n\nFilesListProvider.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired\n};\n\nexport default FilesListProvider;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,eAAe,MAAM,oCAAoC;AAChE,OAAOC,gBAAgB,MAAM,qBAAqB;AAElD,MAAMC,iBAAiB,GAAGA,CAAC;EAAEC;AAAS,CAAC,KAAK;EAC1C,MAAM,CACJ;IAAEC,WAAW;IAAEC,IAAI;IAAEC;EAAQ,CAAC,EAC9B;IAAEC,cAAc;IAAEC,SAAS;IAAEC,UAAU;IAAEC,UAAU;IAAEC;EAAW,CAAC,CAClE,GAAGX,eAAe,CAAC,CAAC;EACrB,oBACEF,KAAA,CAAAc,aAAA,CAACX,gBAAgB,CAACY,QAAQ;IACxBC,KAAK,EAAE;MACLV,WAAW;MACXC,IAAI;MACJC,OAAO;MACPC,cAAc;MACdC,SAAS;MACTC,UAAU;MACVC,UAAU;MACVC;IACF;EAAE,GACDR,QACwB,CAAC;AAEhC,CAAC;AAEDD,iBAAiB,CAACa,SAAS,GAAG;EAC5BZ,QAAQ,EAAEJ,SAAS,CAACiB,SAAS,CAAC,CAACjB,SAAS,CAACkB,OAAO,CAAClB,SAAS,CAACmB,IAAI,CAAC,EAAEnB,SAAS,CAACmB,IAAI,CAAC,CAAC,CAACC;AACrF,CAAC;AAED,eAAejB,iBAAiB","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["useContext","FilesListContext","useFileList"],"sources":["../../../../src/components/FileList/useFileList/index.js"],"sourcesContent":["import { useContext } from 'react';\nimport FilesListContext from '../FilesListContext';\n\nconst useFileList = () => useContext(FilesListContext);\n\nexport default useFileList;\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,OAAO;AAClC,OAAOC,gBAAgB,MAAM,qBAAqB;AAElD,MAAMC,WAAW,GAAGA,CAAA,KAAMF,UAAU,CAACC,gBAAgB,CAAC;AAEtD,eAAeC,WAAW","ignoreList":[]}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { getQuery } from '@blaze-cms/admin-ui-utils';
|
|
2
|
+
import { ALL, INVALID_STORE_KEY_VALUES } from '../../../constants';
|
|
3
|
+
const getFromSearch = async ({
|
|
4
|
+
searchTerm,
|
|
5
|
+
offset,
|
|
6
|
+
limit,
|
|
7
|
+
where,
|
|
8
|
+
client,
|
|
9
|
+
fileStores = []
|
|
10
|
+
}) => {
|
|
11
|
+
const allTypesMatches = [{
|
|
12
|
+
match: {
|
|
13
|
+
type: 'image'
|
|
14
|
+
}
|
|
15
|
+
}, {
|
|
16
|
+
match: {
|
|
17
|
+
type: 'video'
|
|
18
|
+
}
|
|
19
|
+
}, {
|
|
20
|
+
match: {
|
|
21
|
+
type: 'text'
|
|
22
|
+
}
|
|
23
|
+
}];
|
|
24
|
+
const matchSpecificType = [{
|
|
25
|
+
match: {
|
|
26
|
+
type: where.type
|
|
27
|
+
}
|
|
28
|
+
}];
|
|
29
|
+
const match = !where.type || where.type === ALL ? allTypesMatches : matchSpecificType;
|
|
30
|
+
const mustMatch = [];
|
|
31
|
+
if (searchTerm) {
|
|
32
|
+
mustMatch.push({
|
|
33
|
+
simple_query_string: {
|
|
34
|
+
query: `${searchTerm}*`,
|
|
35
|
+
analyze_wildcard: true,
|
|
36
|
+
fields: ['name', 'filename', 'data.altText', 'data.caption', 'data.title', 'data.credits']
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
const storeKeys = [];
|
|
41
|
+
if (INVALID_STORE_KEY_VALUES.includes(where.storeKey)) {
|
|
42
|
+
storeKeys.push(...fileStores.map(({
|
|
43
|
+
key
|
|
44
|
+
}) => key));
|
|
45
|
+
} else if (where.storeKey) {
|
|
46
|
+
storeKeys.push(where.storeKey);
|
|
47
|
+
}
|
|
48
|
+
mustMatch.push({
|
|
49
|
+
bool: {
|
|
50
|
+
should: storeKeys.map(storeKey => ({
|
|
51
|
+
match: {
|
|
52
|
+
storeKey
|
|
53
|
+
}
|
|
54
|
+
})),
|
|
55
|
+
minimum_should_match: 1
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
const {
|
|
59
|
+
data: {
|
|
60
|
+
files: {
|
|
61
|
+
results: files
|
|
62
|
+
},
|
|
63
|
+
all,
|
|
64
|
+
image,
|
|
65
|
+
video,
|
|
66
|
+
text
|
|
67
|
+
}
|
|
68
|
+
} = await client.query({
|
|
69
|
+
query: getQuery('SEARCH_ADMIN_MEDIA'),
|
|
70
|
+
fetchPolicy: 'network-only',
|
|
71
|
+
variables: {
|
|
72
|
+
offset,
|
|
73
|
+
limit,
|
|
74
|
+
sort: searchTerm ? null : 'updated:desc',
|
|
75
|
+
rawQuery: {
|
|
76
|
+
query: {
|
|
77
|
+
bool: {
|
|
78
|
+
must: [...mustMatch, {
|
|
79
|
+
bool: {
|
|
80
|
+
should: match
|
|
81
|
+
}
|
|
82
|
+
}]
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
rawQueryAllResults: {
|
|
87
|
+
query: {
|
|
88
|
+
bool: {
|
|
89
|
+
must: [...mustMatch, {
|
|
90
|
+
bool: {
|
|
91
|
+
should: [{
|
|
92
|
+
match: {
|
|
93
|
+
type: 'image'
|
|
94
|
+
}
|
|
95
|
+
}, {
|
|
96
|
+
match: {
|
|
97
|
+
type: 'video'
|
|
98
|
+
}
|
|
99
|
+
}, {
|
|
100
|
+
match: {
|
|
101
|
+
type: 'text'
|
|
102
|
+
}
|
|
103
|
+
}]
|
|
104
|
+
}
|
|
105
|
+
}]
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
rawQueryImages: {
|
|
110
|
+
query: {
|
|
111
|
+
bool: {
|
|
112
|
+
must: [...mustMatch, {
|
|
113
|
+
bool: {
|
|
114
|
+
should: [{
|
|
115
|
+
match: {
|
|
116
|
+
type: 'image'
|
|
117
|
+
}
|
|
118
|
+
}]
|
|
119
|
+
}
|
|
120
|
+
}]
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
rawQueryVideos: {
|
|
125
|
+
query: {
|
|
126
|
+
bool: {
|
|
127
|
+
must: [...mustMatch, {
|
|
128
|
+
bool: {
|
|
129
|
+
should: [{
|
|
130
|
+
match: {
|
|
131
|
+
type: 'video'
|
|
132
|
+
}
|
|
133
|
+
}]
|
|
134
|
+
}
|
|
135
|
+
}]
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
rawQueryDocs: {
|
|
140
|
+
query: {
|
|
141
|
+
bool: {
|
|
142
|
+
must: [...mustMatch, {
|
|
143
|
+
bool: {
|
|
144
|
+
should: [{
|
|
145
|
+
match: {
|
|
146
|
+
type: 'text'
|
|
147
|
+
}
|
|
148
|
+
}]
|
|
149
|
+
}
|
|
150
|
+
}]
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
return {
|
|
157
|
+
files,
|
|
158
|
+
all,
|
|
159
|
+
image,
|
|
160
|
+
video,
|
|
161
|
+
text
|
|
162
|
+
};
|
|
163
|
+
};
|
|
164
|
+
const getFiles = ({
|
|
165
|
+
offset,
|
|
166
|
+
limit,
|
|
167
|
+
where,
|
|
168
|
+
searchTerm,
|
|
169
|
+
fileStores
|
|
170
|
+
}, client) => getFromSearch({
|
|
171
|
+
searchTerm,
|
|
172
|
+
offset,
|
|
173
|
+
limit,
|
|
174
|
+
where,
|
|
175
|
+
client,
|
|
176
|
+
fileStores
|
|
177
|
+
});
|
|
178
|
+
export default getFiles;
|
|
179
|
+
//# sourceMappingURL=getFiles.js.map
|