@strapi/upload 5.26.0 → 5.28.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.
- package/dist/admin/ai/components/AIAssetCard.js +589 -0
- package/dist/admin/ai/components/AIAssetCard.js.map +1 -0
- package/dist/admin/ai/components/AIAssetCard.mjs +567 -0
- package/dist/admin/ai/components/AIAssetCard.mjs.map +1 -0
- package/dist/admin/ai/components/AIUploadModal.js +363 -0
- package/dist/admin/ai/components/AIUploadModal.js.map +1 -0
- package/dist/admin/ai/components/AIUploadModal.mjs +341 -0
- package/dist/admin/ai/components/AIUploadModal.mjs.map +1 -0
- package/dist/admin/components/AssetDialog/AssetDialog.js +1 -1
- package/dist/admin/components/AssetDialog/AssetDialog.js.map +1 -1
- package/dist/admin/components/AssetDialog/AssetDialog.mjs +1 -1
- package/dist/admin/components/AssetDialog/AssetDialog.mjs.map +1 -1
- package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.js +3 -3
- package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.js.map +1 -1
- package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs +4 -4
- package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.js +5 -5
- package/dist/admin/components/EditAssetDialog/EditAssetContent.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs +5 -5
- package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.js +2 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.mjs +2 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.mjs.map +1 -1
- package/dist/admin/components/SelectTree/utils/flattenTree.js +11 -6
- package/dist/admin/components/SelectTree/utils/flattenTree.js.map +1 -1
- package/dist/admin/components/SelectTree/utils/flattenTree.mjs +11 -6
- package/dist/admin/components/SelectTree/utils/flattenTree.mjs.map +1 -1
- package/dist/admin/hooks/useAiAvailability.js +22 -0
- package/dist/admin/hooks/useAiAvailability.js.map +1 -0
- package/dist/admin/hooks/useAiAvailability.mjs +20 -0
- package/dist/admin/hooks/useAiAvailability.mjs.map +1 -0
- package/dist/admin/hooks/useBulkEdit.js +66 -0
- package/dist/admin/hooks/useBulkEdit.js.map +1 -0
- package/dist/admin/hooks/useBulkEdit.mjs +64 -0
- package/dist/admin/hooks/useBulkEdit.mjs.map +1 -0
- package/dist/admin/hooks/useSettings.js +22 -0
- package/dist/admin/hooks/useSettings.js.map +1 -0
- package/dist/admin/hooks/useSettings.mjs +20 -0
- package/dist/admin/hooks/useSettings.mjs.map +1 -0
- package/dist/admin/hooks/useUpload.js +25 -14
- package/dist/admin/hooks/useUpload.js.map +1 -1
- package/dist/admin/hooks/useUpload.mjs +25 -14
- package/dist/admin/hooks/useUpload.mjs.map +1 -1
- package/dist/admin/package.json.js +5 -5
- package/dist/admin/package.json.mjs +5 -5
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js +0 -1
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs +0 -1
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs.map +1 -1
- package/dist/admin/pages/App/MediaLibrary/MediaLibrary.js +19 -5
- package/dist/admin/pages/App/MediaLibrary/MediaLibrary.js.map +1 -1
- package/dist/admin/pages/App/MediaLibrary/MediaLibrary.mjs +19 -5
- package/dist/admin/pages/App/MediaLibrary/MediaLibrary.mjs.map +1 -1
- package/dist/admin/pages/SettingsPage/SettingsPage.js +222 -144
- package/dist/admin/pages/SettingsPage/SettingsPage.js.map +1 -1
- package/dist/admin/pages/SettingsPage/SettingsPage.mjs +225 -147
- package/dist/admin/pages/SettingsPage/SettingsPage.mjs.map +1 -1
- package/dist/admin/pages/SettingsPage/reducer.js +9 -10
- package/dist/admin/pages/SettingsPage/reducer.js.map +1 -1
- package/dist/admin/pages/SettingsPage/reducer.mjs +9 -10
- package/dist/admin/pages/SettingsPage/reducer.mjs.map +1 -1
- package/dist/admin/src/ai/components/AIAssetCard.d.ts +13 -0
- package/dist/admin/src/ai/components/AIUploadModal.d.ts +55 -0
- package/dist/admin/src/components/EditAssetDialog/EditAssetContent.d.ts +3 -1
- package/dist/admin/src/components/SelectTree/utils/flattenTree.d.ts +3 -1
- package/dist/admin/src/hooks/useAiAvailability.d.ts +4 -0
- package/dist/admin/src/hooks/useBulkEdit.d.ts +91 -0
- package/dist/admin/src/hooks/useSettings.d.ts +7 -0
- package/dist/admin/src/hooks/useUpload.d.ts +1 -1
- package/dist/admin/src/pages/SettingsPage/reducer.d.ts +3 -12
- package/dist/admin/translations/en.json.js +7 -1
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +7 -1
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/utils/getFolderParents.js +2 -1
- package/dist/admin/utils/getFolderParents.js.map +1 -1
- package/dist/admin/utils/getFolderParents.mjs +2 -1
- package/dist/admin/utils/getFolderParents.mjs.map +1 -1
- package/dist/server/bootstrap.js +2 -1
- package/dist/server/bootstrap.js.map +1 -1
- package/dist/server/bootstrap.mjs +2 -1
- package/dist/server/bootstrap.mjs.map +1 -1
- package/dist/server/controllers/admin-upload.js +57 -2
- package/dist/server/controllers/admin-upload.js.map +1 -1
- package/dist/server/controllers/admin-upload.mjs +59 -4
- package/dist/server/controllers/admin-upload.mjs.map +1 -1
- package/dist/server/controllers/content-api.js +3 -1
- package/dist/server/controllers/content-api.js.map +1 -1
- package/dist/server/controllers/content-api.mjs +3 -1
- package/dist/server/controllers/content-api.mjs.map +1 -1
- package/dist/server/controllers/validation/admin/settings.js +2 -1
- package/dist/server/controllers/validation/admin/settings.js.map +1 -1
- package/dist/server/controllers/validation/admin/settings.mjs +2 -1
- package/dist/server/controllers/validation/admin/settings.mjs.map +1 -1
- package/dist/server/controllers/validation/admin/upload.js +8 -0
- package/dist/server/controllers/validation/admin/upload.js.map +1 -1
- package/dist/server/controllers/validation/admin/upload.mjs +8 -1
- package/dist/server/controllers/validation/admin/upload.mjs.map +1 -1
- package/dist/server/routes/admin.js +18 -0
- package/dist/server/routes/admin.js.map +1 -1
- package/dist/server/routes/admin.mjs +18 -0
- package/dist/server/routes/admin.mjs.map +1 -1
- package/dist/server/services/ai-metadata.js +97 -0
- package/dist/server/services/ai-metadata.js.map +1 -0
- package/dist/server/services/ai-metadata.mjs +95 -0
- package/dist/server/services/ai-metadata.mjs.map +1 -0
- package/dist/server/services/index.js +3 -1
- package/dist/server/services/index.js.map +1 -1
- package/dist/server/services/index.mjs +3 -1
- package/dist/server/services/index.mjs.map +1 -1
- package/dist/server/services/upload.js.map +1 -1
- package/dist/server/services/upload.mjs.map +1 -1
- package/dist/server/services/weekly-metrics.js +5 -1
- package/dist/server/services/weekly-metrics.js.map +1 -1
- package/dist/server/services/weekly-metrics.mjs +5 -1
- package/dist/server/services/weekly-metrics.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/controllers/admin-upload.d.ts +1 -0
- package/dist/server/src/controllers/admin-upload.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +1 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/admin/settings.d.ts +3 -0
- package/dist/server/src/controllers/validation/admin/settings.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/admin/upload.d.ts +42 -0
- package/dist/server/src/controllers/validation/admin/upload.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +14 -1
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/routes/admin.d.ts.map +1 -1
- package/dist/server/src/services/ai-metadata.d.ts +13 -0
- package/dist/server/src/services/ai-metadata.d.ts.map +1 -0
- package/dist/server/src/services/index.d.ts +13 -1
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/upload.d.ts +2 -1
- package/dist/server/src/services/upload.d.ts.map +1 -1
- package/dist/server/src/services/weekly-metrics.d.ts +1 -0
- package/dist/server/src/services/weekly-metrics.d.ts.map +1 -1
- package/dist/server/src/types.d.ts +1 -0
- package/dist/server/src/types.d.ts.map +1 -1
- package/dist/server/src/utils/index.d.ts +2 -0
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/dist/server/utils/index.js.map +1 -1
- package/dist/server/utils/index.mjs.map +1 -1
- package/dist/shared/contracts/files.d.ts +22 -0
- package/dist/shared/contracts/settings.d.ts +2 -0
- package/package.json +5 -5
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { Page, useNotification, useFetchClient, Layouts } from '@strapi/admin/strapi-admin';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { useAIAvailability } from '@strapi/admin/strapi-admin/ee';
|
|
5
|
+
import { Button, Flex, Box, Grid, Typography, Field, Toggle } from '@strapi/design-system';
|
|
6
|
+
import { Check, Sparkle } from '@strapi/icons';
|
|
6
7
|
import isEqual from 'lodash/isEqual';
|
|
7
8
|
import { useIntl } from 'react-intl';
|
|
8
|
-
import {
|
|
9
|
+
import { useMutation } from 'react-query';
|
|
9
10
|
import { PERMISSIONS } from '../../constants.mjs';
|
|
11
|
+
import { useSettings } from '../../hooks/useSettings.mjs';
|
|
10
12
|
import 'byte-size';
|
|
11
13
|
import 'date-fns';
|
|
12
14
|
import { getTrad } from '../../utils/getTrad.mjs';
|
|
@@ -19,18 +21,10 @@ import { reducer, initialState } from './reducer.mjs';
|
|
|
19
21
|
const SettingsPage = ()=>{
|
|
20
22
|
const { formatMessage } = useIntl();
|
|
21
23
|
const { toggleNotification } = useNotification();
|
|
22
|
-
const {
|
|
24
|
+
const { put } = useFetchClient();
|
|
23
25
|
const [{ initialData, modifiedData }, dispatch] = React.useReducer(reducer, initialState, init);
|
|
24
|
-
const { data, isLoading, refetch } =
|
|
25
|
-
|
|
26
|
-
'upload',
|
|
27
|
-
'settings'
|
|
28
|
-
],
|
|
29
|
-
async queryFn () {
|
|
30
|
-
const { data: { data } } = await get('/upload/settings');
|
|
31
|
-
return data;
|
|
32
|
-
}
|
|
33
|
-
});
|
|
26
|
+
const { data, isLoading, refetch } = useSettings();
|
|
27
|
+
const isAIAvailable = useAIAvailability();
|
|
34
28
|
React.useEffect(()=>{
|
|
35
29
|
if (data) {
|
|
36
30
|
dispatch({
|
|
@@ -82,7 +76,7 @@ const SettingsPage = ()=>{
|
|
|
82
76
|
/*#__PURE__*/ jsx(Page.Title, {
|
|
83
77
|
children: formatMessage({
|
|
84
78
|
id: getTrad('page.title'),
|
|
85
|
-
defaultMessage: 'Settings - Media
|
|
79
|
+
defaultMessage: 'Settings - Media Library'
|
|
86
80
|
})
|
|
87
81
|
}),
|
|
88
82
|
/*#__PURE__*/ jsxs("form", {
|
|
@@ -111,161 +105,245 @@ const SettingsPage = ()=>{
|
|
|
111
105
|
}),
|
|
112
106
|
/*#__PURE__*/ jsx(Layouts.Content, {
|
|
113
107
|
children: /*#__PURE__*/ jsx(Layouts.Root, {
|
|
114
|
-
children: /*#__PURE__*/
|
|
108
|
+
children: /*#__PURE__*/ jsxs(Flex, {
|
|
115
109
|
direction: "column",
|
|
116
110
|
alignItems: "stretch",
|
|
117
|
-
gap:
|
|
118
|
-
children:
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
/*#__PURE__*/
|
|
129
|
-
children: /*#__PURE__*/ jsx(Typography, {
|
|
130
|
-
variant: "delta",
|
|
131
|
-
tag: "h2",
|
|
132
|
-
children: formatMessage({
|
|
133
|
-
id: getTrad('settings.blockTitle'),
|
|
134
|
-
defaultMessage: 'Asset management'
|
|
135
|
-
})
|
|
136
|
-
})
|
|
137
|
-
}),
|
|
138
|
-
/*#__PURE__*/ jsxs(Grid.Root, {
|
|
111
|
+
gap: 4,
|
|
112
|
+
children: [
|
|
113
|
+
isAIAvailable && /*#__PURE__*/ jsx(Box, {
|
|
114
|
+
background: "neutral0",
|
|
115
|
+
padding: 6,
|
|
116
|
+
shadow: "filterShadow",
|
|
117
|
+
hasRadius: true,
|
|
118
|
+
children: /*#__PURE__*/ jsx(Flex, {
|
|
119
|
+
direction: "column",
|
|
120
|
+
alignItems: "stretch",
|
|
121
|
+
gap: 1,
|
|
122
|
+
children: /*#__PURE__*/ jsxs(Grid.Root, {
|
|
139
123
|
gap: 6,
|
|
140
124
|
children: [
|
|
141
|
-
/*#__PURE__*/
|
|
142
|
-
col:
|
|
125
|
+
/*#__PURE__*/ jsxs(Grid.Item, {
|
|
126
|
+
col: 8,
|
|
143
127
|
s: 12,
|
|
144
128
|
direction: "column",
|
|
145
129
|
alignItems: "stretch",
|
|
146
|
-
children:
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
130
|
+
children: [
|
|
131
|
+
/*#__PURE__*/ jsxs(Flex, {
|
|
132
|
+
gap: 2,
|
|
133
|
+
children: [
|
|
134
|
+
/*#__PURE__*/ jsx(Box, {
|
|
135
|
+
color: "alternative700",
|
|
136
|
+
children: /*#__PURE__*/ jsx(Sparkle, {})
|
|
137
|
+
}),
|
|
138
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
139
|
+
variant: "delta",
|
|
140
|
+
tag: "h2",
|
|
141
|
+
children: formatMessage({
|
|
142
|
+
id: getTrad('settings.form.aiMetadata.label'),
|
|
143
|
+
defaultMessage: 'Generate AI captions and alt texts automatically on upload!'
|
|
144
|
+
})
|
|
145
|
+
})
|
|
146
|
+
]
|
|
150
147
|
}),
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
/*#__PURE__*/ jsx(
|
|
148
|
+
/*#__PURE__*/ jsx(Flex, {
|
|
149
|
+
paddingTop: 1,
|
|
150
|
+
children: /*#__PURE__*/ jsx(Typography, {
|
|
151
|
+
variant: "pi",
|
|
152
|
+
textColor: "neutral600",
|
|
154
153
|
children: formatMessage({
|
|
155
|
-
id: getTrad('settings.form.
|
|
156
|
-
defaultMessage: '
|
|
154
|
+
id: getTrad('settings.form.aiMetadata.description'),
|
|
155
|
+
defaultMessage: 'Enable this feature to save time, optimize your SEO and increase accessibility by letting our AI generate captions and alternative texts for you.'
|
|
157
156
|
})
|
|
158
|
-
})
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
offLabel: formatMessage({
|
|
162
|
-
id: 'app.components.ToggleCheckbox.off-label',
|
|
163
|
-
defaultMessage: 'Off'
|
|
164
|
-
}),
|
|
165
|
-
onLabel: formatMessage({
|
|
166
|
-
id: 'app.components.ToggleCheckbox.on-label',
|
|
167
|
-
defaultMessage: 'On'
|
|
168
|
-
}),
|
|
169
|
-
onChange: (e)=>{
|
|
170
|
-
handleChange({
|
|
171
|
-
target: {
|
|
172
|
-
name: 'responsiveDimensions',
|
|
173
|
-
value: e.target.checked
|
|
174
|
-
}
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
}),
|
|
178
|
-
/*#__PURE__*/ jsx(Field.Hint, {})
|
|
179
|
-
]
|
|
180
|
-
})
|
|
157
|
+
})
|
|
158
|
+
})
|
|
159
|
+
]
|
|
181
160
|
}),
|
|
182
161
|
/*#__PURE__*/ jsx(Grid.Item, {
|
|
183
|
-
col:
|
|
162
|
+
col: 4,
|
|
184
163
|
s: 12,
|
|
185
164
|
direction: "column",
|
|
186
|
-
alignItems: "
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
id: getTrad('settings.form.sizeOptimization.label'),
|
|
197
|
-
defaultMessage: 'Size optimization'
|
|
198
|
-
})
|
|
165
|
+
alignItems: "end",
|
|
166
|
+
justifyContent: 'center',
|
|
167
|
+
children: /*#__PURE__*/ jsx(Field.Root, {
|
|
168
|
+
name: "aiMetadata",
|
|
169
|
+
width: '158px',
|
|
170
|
+
children: /*#__PURE__*/ jsx(Toggle, {
|
|
171
|
+
checked: modifiedData?.aiMetadata,
|
|
172
|
+
offLabel: formatMessage({
|
|
173
|
+
id: 'app.components.ToggleCheckbox.off-label',
|
|
174
|
+
defaultMessage: 'Disabled'
|
|
199
175
|
}),
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
id: 'app.components.ToggleCheckbox.off-label',
|
|
204
|
-
defaultMessage: 'Off'
|
|
205
|
-
}),
|
|
206
|
-
onLabel: formatMessage({
|
|
207
|
-
id: 'app.components.ToggleCheckbox.on-label',
|
|
208
|
-
defaultMessage: 'On'
|
|
209
|
-
}),
|
|
210
|
-
onChange: (e)=>{
|
|
211
|
-
handleChange({
|
|
212
|
-
target: {
|
|
213
|
-
name: 'sizeOptimization',
|
|
214
|
-
value: e.target.checked
|
|
215
|
-
}
|
|
216
|
-
});
|
|
217
|
-
}
|
|
176
|
+
onLabel: formatMessage({
|
|
177
|
+
id: 'app.components.ToggleCheckbox.on-label',
|
|
178
|
+
defaultMessage: 'Enabled'
|
|
218
179
|
}),
|
|
219
|
-
|
|
220
|
-
|
|
180
|
+
onChange: (e)=>{
|
|
181
|
+
handleChange({
|
|
182
|
+
target: {
|
|
183
|
+
name: 'aiMetadata',
|
|
184
|
+
value: e.target.checked
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
})
|
|
221
189
|
})
|
|
222
|
-
})
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
190
|
+
})
|
|
191
|
+
]
|
|
192
|
+
})
|
|
193
|
+
})
|
|
194
|
+
}),
|
|
195
|
+
/*#__PURE__*/ jsx(Box, {
|
|
196
|
+
background: "neutral0",
|
|
197
|
+
padding: 6,
|
|
198
|
+
shadow: "filterShadow",
|
|
199
|
+
hasRadius: true,
|
|
200
|
+
children: /*#__PURE__*/ jsxs(Flex, {
|
|
201
|
+
direction: "column",
|
|
202
|
+
alignItems: "stretch",
|
|
203
|
+
gap: 4,
|
|
204
|
+
children: [
|
|
205
|
+
/*#__PURE__*/ jsx(Flex, {
|
|
206
|
+
children: /*#__PURE__*/ jsx(Typography, {
|
|
207
|
+
variant: "delta",
|
|
208
|
+
tag: "h2",
|
|
209
|
+
children: formatMessage({
|
|
210
|
+
id: getTrad('settings.blockTitle'),
|
|
211
|
+
defaultMessage: 'Asset management'
|
|
212
|
+
})
|
|
213
|
+
})
|
|
214
|
+
}),
|
|
215
|
+
/*#__PURE__*/ jsxs(Grid.Root, {
|
|
216
|
+
gap: 6,
|
|
217
|
+
children: [
|
|
218
|
+
/*#__PURE__*/ jsx(Grid.Item, {
|
|
219
|
+
col: 6,
|
|
220
|
+
s: 12,
|
|
221
|
+
direction: "column",
|
|
222
|
+
alignItems: "stretch",
|
|
223
|
+
children: /*#__PURE__*/ jsxs(Field.Root, {
|
|
224
|
+
hint: formatMessage({
|
|
225
|
+
id: getTrad('settings.form.responsiveDimensions.description'),
|
|
226
|
+
defaultMessage: 'Enabling this option will generate multiple formats (small, medium and large) of the uploaded asset.'
|
|
240
227
|
}),
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
228
|
+
name: "responsiveDimensions",
|
|
229
|
+
children: [
|
|
230
|
+
/*#__PURE__*/ jsx(Field.Label, {
|
|
231
|
+
children: formatMessage({
|
|
232
|
+
id: getTrad('settings.form.responsiveDimensions.label'),
|
|
233
|
+
defaultMessage: 'Responsive friendly upload'
|
|
234
|
+
})
|
|
246
235
|
}),
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
236
|
+
/*#__PURE__*/ jsx(Toggle, {
|
|
237
|
+
checked: modifiedData?.responsiveDimensions,
|
|
238
|
+
offLabel: formatMessage({
|
|
239
|
+
id: 'app.components.ToggleCheckbox.off-label',
|
|
240
|
+
defaultMessage: 'Off'
|
|
241
|
+
}),
|
|
242
|
+
onLabel: formatMessage({
|
|
243
|
+
id: 'app.components.ToggleCheckbox.on-label',
|
|
244
|
+
defaultMessage: 'On'
|
|
245
|
+
}),
|
|
246
|
+
onChange: (e)=>{
|
|
247
|
+
handleChange({
|
|
248
|
+
target: {
|
|
249
|
+
name: 'responsiveDimensions',
|
|
250
|
+
value: e.target.checked
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
}
|
|
250
254
|
}),
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
255
|
+
/*#__PURE__*/ jsx(Field.Hint, {})
|
|
256
|
+
]
|
|
257
|
+
})
|
|
258
|
+
}),
|
|
259
|
+
/*#__PURE__*/ jsx(Grid.Item, {
|
|
260
|
+
col: 6,
|
|
261
|
+
s: 12,
|
|
262
|
+
direction: "column",
|
|
263
|
+
alignItems: "stretch",
|
|
264
|
+
children: /*#__PURE__*/ jsxs(Field.Root, {
|
|
265
|
+
hint: formatMessage({
|
|
266
|
+
id: getTrad('settings.form.sizeOptimization.description'),
|
|
267
|
+
defaultMessage: 'Enabling this option will reduce the image size and slightly reduce its quality.'
|
|
259
268
|
}),
|
|
260
|
-
|
|
261
|
-
|
|
269
|
+
name: "sizeOptimization",
|
|
270
|
+
children: [
|
|
271
|
+
/*#__PURE__*/ jsx(Field.Label, {
|
|
272
|
+
children: formatMessage({
|
|
273
|
+
id: getTrad('settings.form.sizeOptimization.label'),
|
|
274
|
+
defaultMessage: 'Size optimization'
|
|
275
|
+
})
|
|
276
|
+
}),
|
|
277
|
+
/*#__PURE__*/ jsx(Toggle, {
|
|
278
|
+
checked: modifiedData?.sizeOptimization,
|
|
279
|
+
offLabel: formatMessage({
|
|
280
|
+
id: 'app.components.ToggleCheckbox.off-label',
|
|
281
|
+
defaultMessage: 'Off'
|
|
282
|
+
}),
|
|
283
|
+
onLabel: formatMessage({
|
|
284
|
+
id: 'app.components.ToggleCheckbox.on-label',
|
|
285
|
+
defaultMessage: 'On'
|
|
286
|
+
}),
|
|
287
|
+
onChange: (e)=>{
|
|
288
|
+
handleChange({
|
|
289
|
+
target: {
|
|
290
|
+
name: 'sizeOptimization',
|
|
291
|
+
value: e.target.checked
|
|
292
|
+
}
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
}),
|
|
296
|
+
/*#__PURE__*/ jsx(Field.Hint, {})
|
|
297
|
+
]
|
|
298
|
+
})
|
|
299
|
+
}),
|
|
300
|
+
/*#__PURE__*/ jsx(Grid.Item, {
|
|
301
|
+
col: 6,
|
|
302
|
+
s: 12,
|
|
303
|
+
direction: "column",
|
|
304
|
+
alignItems: "stretch",
|
|
305
|
+
children: /*#__PURE__*/ jsxs(Field.Root, {
|
|
306
|
+
hint: formatMessage({
|
|
307
|
+
id: getTrad('settings.form.autoOrientation.description'),
|
|
308
|
+
defaultMessage: 'Enabling this option will automatically rotate the image according to EXIF orientation tag.'
|
|
309
|
+
}),
|
|
310
|
+
name: "autoOrientation",
|
|
311
|
+
children: [
|
|
312
|
+
/*#__PURE__*/ jsx(Field.Label, {
|
|
313
|
+
children: formatMessage({
|
|
314
|
+
id: getTrad('settings.form.autoOrientation.label'),
|
|
315
|
+
defaultMessage: 'Auto orientation'
|
|
316
|
+
})
|
|
317
|
+
}),
|
|
318
|
+
/*#__PURE__*/ jsx(Toggle, {
|
|
319
|
+
checked: modifiedData?.autoOrientation,
|
|
320
|
+
offLabel: formatMessage({
|
|
321
|
+
id: 'app.components.ToggleCheckbox.off-label',
|
|
322
|
+
defaultMessage: 'Off'
|
|
323
|
+
}),
|
|
324
|
+
onLabel: formatMessage({
|
|
325
|
+
id: 'app.components.ToggleCheckbox.on-label',
|
|
326
|
+
defaultMessage: 'On'
|
|
327
|
+
}),
|
|
328
|
+
onChange: (e)=>{
|
|
329
|
+
handleChange({
|
|
330
|
+
target: {
|
|
331
|
+
name: 'autoOrientation',
|
|
332
|
+
value: e.target.checked
|
|
333
|
+
}
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
}),
|
|
337
|
+
/*#__PURE__*/ jsx(Field.Hint, {})
|
|
338
|
+
]
|
|
339
|
+
})
|
|
262
340
|
})
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
341
|
+
]
|
|
342
|
+
})
|
|
343
|
+
]
|
|
344
|
+
})
|
|
267
345
|
})
|
|
268
|
-
|
|
346
|
+
]
|
|
269
347
|
})
|
|
270
348
|
})
|
|
271
349
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsPage.mjs","sources":["../../../../admin/src/pages/SettingsPage/SettingsPage.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { Page, useNotification, useFetchClient, Layouts } from '@strapi/admin/strapi-admin';\nimport { Box, Button, Flex, Grid, Toggle, Typography, Field } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery } from 'react-query';\n\nimport { UpdateSettings } from '../../../../shared/contracts/settings';\nimport { PERMISSIONS } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport { init } from './init';\nimport { initialState, reducer } from './reducer';\n\nimport type { InitialState } from './reducer';\n\nexport const SettingsPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { get, put } = useFetchClient();\n\n const [{ initialData, modifiedData }, dispatch] = React.useReducer(reducer, initialState, init);\n\n const { data, isLoading, refetch } = useQuery({\n queryKey: ['upload', 'settings'],\n async queryFn() {\n const {\n data: { data },\n } = await get('/upload/settings');\n\n return data;\n },\n });\n\n React.useEffect(() => {\n if (data) {\n dispatch({\n type: 'GET_DATA_SUCCEEDED',\n data,\n });\n }\n }, [data]);\n\n const isSaveButtonDisabled = isEqual(initialData, modifiedData);\n\n const { mutateAsync, isLoading: isSubmitting } = useMutation<\n UpdateSettings.Response['data'],\n UpdateSettings.Response['error'],\n UpdateSettings.Request['body']\n >(\n async (body) => {\n const { data } = await put('/upload/settings', body);\n\n return data;\n },\n {\n onSuccess() {\n refetch();\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.form.success.fields' }),\n });\n },\n onError(err) {\n console.error(err);\n },\n }\n );\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n if (isSaveButtonDisabled) {\n return;\n }\n\n await mutateAsync(modifiedData!);\n };\n\n const handleChange = ({\n target: { name, value },\n }: {\n target: { name: keyof NonNullable<InitialState['initialData']>; value: boolean };\n }) => {\n dispatch({\n type: 'ON_CHANGE',\n keys: name,\n value,\n });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main tabIndex={-1}>\n <Page.Title>\n {formatMessage({\n id: getTrad('page.title'),\n defaultMessage: 'Settings - Media Libray',\n })}\n </Page.Title>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n title={formatMessage({\n id: getTrad('settings.header.label'),\n defaultMessage: 'Media Library',\n })}\n primaryAction={\n <Button\n disabled={isSaveButtonDisabled}\n loading={isSubmitting}\n type=\"submit\"\n startIcon={<Check />}\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTrad('settings.sub-header.label'),\n defaultMessage: 'Configure the settings for the Media Library',\n })}\n />\n <Layouts.Content>\n <Layouts.Root>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={12}>\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('settings.blockTitle'),\n defaultMessage: 'Asset management',\n })}\n </Typography>\n </Flex>\n <Grid.Root gap={6}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.responsiveDimensions.description'),\n defaultMessage:\n 'Enabling this option will generate multiple formats (small, medium and large) of the uploaded asset.',\n })}\n name=\"responsiveDimensions\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.responsiveDimensions.label'),\n defaultMessage: 'Responsive friendly upload',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.responsiveDimensions}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'responsiveDimensions', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.sizeOptimization.description'),\n defaultMessage:\n 'Enabling this option will reduce the image size and slightly reduce its quality.',\n })}\n name=\"sizeOptimization\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.sizeOptimization.label'),\n defaultMessage: 'Size optimization',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.sizeOptimization}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'sizeOptimization', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.autoOrientation.description'),\n defaultMessage:\n 'Enabling this option will automatically rotate the image according to EXIF orientation tag.',\n })}\n name=\"autoOrientation\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.autoOrientation.label'),\n defaultMessage: 'Auto orientation',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.autoOrientation}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'autoOrientation', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n </Flex>\n </Layouts.Root>\n </Layouts.Content>\n </form>\n </Page.Main>\n );\n};\n\nexport const ProtectedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.settings}>\n <SettingsPage />\n </Page.Protect>\n);\n"],"names":["SettingsPage","formatMessage","useIntl","toggleNotification","useNotification","get","put","useFetchClient","initialData","modifiedData","dispatch","React","useReducer","reducer","initialState","init","data","isLoading","refetch","useQuery","queryKey","queryFn","useEffect","type","isSaveButtonDisabled","isEqual","mutateAsync","isSubmitting","useMutation","body","onSuccess","message","id","onError","err","console","error","handleSubmit","e","preventDefault","handleChange","target","name","value","keys","_jsx","Page","Loading","_jsxs","Main","tabIndex","Title","getTrad","defaultMessage","form","onSubmit","Layouts","Header","title","primaryAction","Button","disabled","loading","startIcon","Check","size","subtitle","Content","Root","Flex","direction","alignItems","gap","Box","background","padding","shadow","hasRadius","Typography","variant","tag","Grid","Item","col","s","Field","hint","Label","Toggle","checked","responsiveDimensions","offLabel","onLabel","onChange","Hint","sizeOptimization","autoOrientation","ProtectedSettingsPage","Protect","permissions","PERMISSIONS","settings"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SettingsPage.mjs","sources":["../../../../admin/src/pages/SettingsPage/SettingsPage.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { Page, useNotification, useFetchClient, Layouts } from '@strapi/admin/strapi-admin';\nimport { useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport { Box, Button, Flex, Grid, Toggle, Typography, Field } from '@strapi/design-system';\nimport { Check, Sparkle } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\n\nimport { UpdateSettings } from '../../../../shared/contracts/settings';\nimport { PERMISSIONS } from '../../constants';\nimport { useSettings } from '../../hooks/useSettings';\nimport { getTrad } from '../../utils';\n\nimport { init } from './init';\nimport { initialState, reducer } from './reducer';\n\nimport type { InitialState } from './reducer';\n\nexport const SettingsPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { put } = useFetchClient();\n\n const [{ initialData, modifiedData }, dispatch] = React.useReducer(reducer, initialState, init);\n\n const { data, isLoading, refetch } = useSettings();\n const isAIAvailable = useAIAvailability();\n\n React.useEffect(() => {\n if (data) {\n dispatch({\n type: 'GET_DATA_SUCCEEDED',\n data,\n });\n }\n }, [data]);\n\n const isSaveButtonDisabled = isEqual(initialData, modifiedData);\n\n const { mutateAsync, isLoading: isSubmitting } = useMutation<\n UpdateSettings.Response['data'],\n UpdateSettings.Response['error'],\n UpdateSettings.Request['body']\n >(\n async (body) => {\n const { data } = await put('/upload/settings', body);\n\n return data;\n },\n {\n onSuccess() {\n refetch();\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.form.success.fields' }),\n });\n },\n onError(err) {\n console.error(err);\n },\n }\n );\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n if (isSaveButtonDisabled) {\n return;\n }\n\n await mutateAsync(modifiedData!);\n };\n\n const handleChange = ({\n target: { name, value },\n }: {\n target: { name: keyof NonNullable<InitialState['initialData']>; value: boolean };\n }) => {\n dispatch({\n type: 'ON_CHANGE',\n keys: name,\n value,\n });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main tabIndex={-1}>\n <Page.Title>\n {formatMessage({\n id: getTrad('page.title'),\n defaultMessage: 'Settings - Media Library',\n })}\n </Page.Title>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n title={formatMessage({\n id: getTrad('settings.header.label'),\n defaultMessage: 'Media Library',\n })}\n primaryAction={\n <Button\n disabled={isSaveButtonDisabled}\n loading={isSubmitting}\n type=\"submit\"\n startIcon={<Check />}\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTrad('settings.sub-header.label'),\n defaultMessage: 'Configure the settings for the Media Library',\n })}\n />\n <Layouts.Content>\n <Layouts.Root>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n {isAIAvailable && (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Grid.Root gap={6}>\n <Grid.Item col={8} s={12} direction=\"column\" alignItems=\"stretch\">\n <Flex gap={2}>\n <Box color=\"alternative700\">\n <Sparkle />\n </Box>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.label'),\n defaultMessage:\n 'Generate AI captions and alt texts automatically on upload!',\n })}\n </Typography>\n </Flex>\n <Flex paddingTop={1}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.description'),\n defaultMessage:\n 'Enable this feature to save time, optimize your SEO and increase accessibility by letting our AI generate captions and alternative texts for you.',\n })}\n </Typography>\n </Flex>\n </Grid.Item>\n <Grid.Item\n col={4}\n s={12}\n direction=\"column\"\n alignItems=\"end\"\n justifyContent={'center'}\n >\n <Field.Root name=\"aiMetadata\" width={'158px'}>\n <Toggle\n checked={modifiedData?.aiMetadata}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Disabled',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'Enabled',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'aiMetadata', value: e.target.checked },\n });\n }}\n />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n )}\n\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('settings.blockTitle'),\n defaultMessage: 'Asset management',\n })}\n </Typography>\n </Flex>\n <Grid.Root gap={6}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.responsiveDimensions.description'),\n defaultMessage:\n 'Enabling this option will generate multiple formats (small, medium and large) of the uploaded asset.',\n })}\n name=\"responsiveDimensions\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.responsiveDimensions.label'),\n defaultMessage: 'Responsive friendly upload',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.responsiveDimensions}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'responsiveDimensions', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.sizeOptimization.description'),\n defaultMessage:\n 'Enabling this option will reduce the image size and slightly reduce its quality.',\n })}\n name=\"sizeOptimization\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.sizeOptimization.label'),\n defaultMessage: 'Size optimization',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.sizeOptimization}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'sizeOptimization', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.autoOrientation.description'),\n defaultMessage:\n 'Enabling this option will automatically rotate the image according to EXIF orientation tag.',\n })}\n name=\"autoOrientation\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.autoOrientation.label'),\n defaultMessage: 'Auto orientation',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.autoOrientation}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'autoOrientation', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n </Flex>\n </Layouts.Root>\n </Layouts.Content>\n </form>\n </Page.Main>\n );\n};\n\nexport const ProtectedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.settings}>\n <SettingsPage />\n </Page.Protect>\n);\n"],"names":["SettingsPage","formatMessage","useIntl","toggleNotification","useNotification","put","useFetchClient","initialData","modifiedData","dispatch","React","useReducer","reducer","initialState","init","data","isLoading","refetch","useSettings","isAIAvailable","useAIAvailability","useEffect","type","isSaveButtonDisabled","isEqual","mutateAsync","isSubmitting","useMutation","body","onSuccess","message","id","onError","err","console","error","handleSubmit","e","preventDefault","handleChange","target","name","value","keys","_jsx","Page","Loading","_jsxs","Main","tabIndex","Title","getTrad","defaultMessage","form","onSubmit","Layouts","Header","title","primaryAction","Button","disabled","loading","startIcon","Check","size","subtitle","Content","Root","Flex","direction","alignItems","gap","Box","background","padding","shadow","hasRadius","Grid","Item","col","s","color","Sparkle","Typography","variant","tag","paddingTop","textColor","justifyContent","Field","width","Toggle","checked","aiMetadata","offLabel","onLabel","onChange","hint","Label","responsiveDimensions","Hint","sizeOptimization","autoOrientation","ProtectedSettingsPage","Protect","permissions","PERMISSIONS","settings"],"mappings":"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"}
|
|
@@ -3,18 +3,17 @@
|
|
|
3
3
|
var immer = require('immer');
|
|
4
4
|
var set = require('lodash/set');
|
|
5
5
|
|
|
6
|
+
const initialData = {
|
|
7
|
+
responsiveDimensions: true,
|
|
8
|
+
sizeOptimization: true,
|
|
9
|
+
autoOrientation: false,
|
|
10
|
+
videoPreview: false,
|
|
11
|
+
aiMetadata: true
|
|
12
|
+
};
|
|
6
13
|
const initialState = {
|
|
7
|
-
initialData
|
|
8
|
-
responsiveDimensions: true,
|
|
9
|
-
sizeOptimization: true,
|
|
10
|
-
autoOrientation: false,
|
|
11
|
-
videoPreview: false
|
|
12
|
-
},
|
|
14
|
+
initialData,
|
|
13
15
|
modifiedData: {
|
|
14
|
-
|
|
15
|
-
sizeOptimization: true,
|
|
16
|
-
autoOrientation: false,
|
|
17
|
-
videoPreview: false
|
|
16
|
+
...initialData
|
|
18
17
|
}
|
|
19
18
|
};
|
|
20
19
|
const reducer = (state, action)=>immer.produce(state, (drafState)=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.js","sources":["../../../../admin/src/pages/SettingsPage/reducer.ts"],"sourcesContent":["import { produce } from 'immer';\nimport set from 'lodash/set';\n\
|
|
1
|
+
{"version":3,"file":"reducer.js","sources":["../../../../admin/src/pages/SettingsPage/reducer.ts"],"sourcesContent":["import { produce } from 'immer';\nimport set from 'lodash/set';\n\nimport { SettingsData } from '../../../../shared/contracts/settings';\n\nconst initialData: SettingsData = {\n responsiveDimensions: true,\n sizeOptimization: true,\n autoOrientation: false,\n videoPreview: false,\n aiMetadata: true,\n};\n\nexport type InitialState = {\n initialData: SettingsData | null;\n modifiedData: SettingsData | null;\n};\n\ninterface ActionGetDataSucceeded {\n type: 'GET_DATA_SUCCEEDED';\n data: InitialState['initialData'];\n}\n\ninterface ActionOnChange {\n type: 'ON_CHANGE';\n keys: keyof NonNullable<InitialState['initialData']>;\n value: boolean;\n}\n\nexport type Action = ActionGetDataSucceeded | ActionOnChange;\n\nconst initialState: InitialState = {\n initialData,\n modifiedData: { ...initialData },\n};\n\nconst reducer = (state: InitialState, action: Action) =>\n produce(state, (drafState) => {\n switch (action.type) {\n case 'GET_DATA_SUCCEEDED': {\n drafState.initialData = action.data;\n drafState.modifiedData = action.data;\n break;\n }\n case 'ON_CHANGE': {\n set(drafState, ['modifiedData', ...action.keys.split('.')], action.value);\n break;\n }\n default:\n return state;\n }\n });\n\nexport { initialState, reducer };\n"],"names":["initialData","responsiveDimensions","sizeOptimization","autoOrientation","videoPreview","aiMetadata","initialState","modifiedData","reducer","state","action","produce","drafState","type","data","set","keys","split","value"],"mappings":";;;;;AAKA,MAAMA,WAA4B,GAAA;IAChCC,oBAAsB,EAAA,IAAA;IACtBC,gBAAkB,EAAA,IAAA;IAClBC,eAAiB,EAAA,KAAA;IACjBC,YAAc,EAAA,KAAA;IACdC,UAAY,EAAA;AACd,CAAA;AAoBA,MAAMC,YAA6B,GAAA;AACjCN,IAAAA,WAAAA;IACAO,YAAc,EAAA;AAAE,QAAA,GAAGP;AAAY;AACjC;AAEA,MAAMQ,UAAU,CAACC,KAAAA,EAAqBC,MACpCC,GAAAA,aAAAA,CAAQF,OAAO,CAACG,SAAAA,GAAAA;AACd,QAAA,OAAQF,OAAOG,IAAI;YACjB,KAAK,oBAAA;AAAsB,gBAAA;oBACzBD,SAAUZ,CAAAA,WAAW,GAAGU,MAAAA,CAAOI,IAAI;oBACnCF,SAAUL,CAAAA,YAAY,GAAGG,MAAAA,CAAOI,IAAI;AACpC,oBAAA;AACF;YACA,KAAK,WAAA;AAAa,gBAAA;AAChBC,oBAAAA,GAAAA,CAAIH,SAAW,EAAA;AAAC,wBAAA,cAAA;2BAAmBF,MAAOM,CAAAA,IAAI,CAACC,KAAK,CAAC,GAAA;AAAK,qBAAA,EAAEP,OAAOQ,KAAK,CAAA;AACxE,oBAAA;AACF;AACA,YAAA;gBACE,OAAOT,KAAAA;AACX;AACF,KAAA;;;;;"}
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import { produce } from 'immer';
|
|
2
2
|
import set from 'lodash/set';
|
|
3
3
|
|
|
4
|
+
const initialData = {
|
|
5
|
+
responsiveDimensions: true,
|
|
6
|
+
sizeOptimization: true,
|
|
7
|
+
autoOrientation: false,
|
|
8
|
+
videoPreview: false,
|
|
9
|
+
aiMetadata: true
|
|
10
|
+
};
|
|
4
11
|
const initialState = {
|
|
5
|
-
initialData
|
|
6
|
-
responsiveDimensions: true,
|
|
7
|
-
sizeOptimization: true,
|
|
8
|
-
autoOrientation: false,
|
|
9
|
-
videoPreview: false
|
|
10
|
-
},
|
|
12
|
+
initialData,
|
|
11
13
|
modifiedData: {
|
|
12
|
-
|
|
13
|
-
sizeOptimization: true,
|
|
14
|
-
autoOrientation: false,
|
|
15
|
-
videoPreview: false
|
|
14
|
+
...initialData
|
|
16
15
|
}
|
|
17
16
|
};
|
|
18
17
|
const reducer = (state, action)=>produce(state, (drafState)=>{
|