@strapi/upload 5.9.0 → 5.10.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 (214) hide show
  1. package/dist/admin/chunks/App-BJY37n6T.js +993 -0
  2. package/dist/admin/chunks/App-BJY37n6T.js.map +1 -0
  3. package/dist/admin/chunks/App-DcpAXZuK.mjs +972 -0
  4. package/dist/admin/chunks/App-DcpAXZuK.mjs.map +1 -0
  5. package/dist/admin/chunks/ConfigureTheView-Bwf5I3Vq.mjs +276 -0
  6. package/dist/admin/chunks/ConfigureTheView-Bwf5I3Vq.mjs.map +1 -0
  7. package/dist/admin/chunks/ConfigureTheView-CnUk2xYx.js +297 -0
  8. package/dist/admin/chunks/ConfigureTheView-CnUk2xYx.js.map +1 -0
  9. package/dist/admin/chunks/SettingsPage-7DUsHuJU.js +354 -0
  10. package/dist/admin/chunks/SettingsPage-7DUsHuJU.js.map +1 -0
  11. package/dist/admin/chunks/SettingsPage-DJe31MUj.mjs +332 -0
  12. package/dist/admin/chunks/SettingsPage-DJe31MUj.mjs.map +1 -0
  13. package/dist/admin/chunks/ca-Bi4qskZD.mjs +120 -0
  14. package/dist/{_chunks/es-CuWi2pOn.mjs.map → admin/chunks/ca-Bi4qskZD.mjs.map} +1 -1
  15. package/dist/admin/chunks/ca-pCOhKIn8.js +122 -0
  16. package/dist/{_chunks/es-DWFtw_h4.js.map → admin/chunks/ca-pCOhKIn8.js.map} +1 -1
  17. package/dist/admin/chunks/de-BlbX8Dl_.mjs +106 -0
  18. package/dist/{_chunks/pl-Cj8jChOO.mjs.map → admin/chunks/de-BlbX8Dl_.mjs.map} +1 -1
  19. package/dist/admin/chunks/de-DUjKLmOP.js +108 -0
  20. package/dist/{_chunks/de-uGb_Pkq7.js.map → admin/chunks/de-DUjKLmOP.js.map} +1 -1
  21. package/dist/admin/chunks/dk-C2ydE6A7.mjs +102 -0
  22. package/dist/{_chunks/ko-vJl9kPpn.mjs.map → admin/chunks/dk-C2ydE6A7.mjs.map} +1 -1
  23. package/dist/admin/chunks/dk-DSsspA0e.js +104 -0
  24. package/dist/{_chunks/dk-Cd8oFO-O.js.map → admin/chunks/dk-DSsspA0e.js.map} +1 -1
  25. package/dist/admin/chunks/en-Bw_Cb2IV.mjs +143 -0
  26. package/dist/{_chunks/en-oDx2Gnre.mjs.map → admin/chunks/en-Bw_Cb2IV.mjs.map} +1 -1
  27. package/dist/admin/chunks/en-UjETkewz.js +145 -0
  28. package/dist/{_chunks/en-BcOqhiNe.js.map → admin/chunks/en-UjETkewz.js.map} +1 -1
  29. package/dist/admin/chunks/es-CiEgbw0k.mjs +119 -0
  30. package/dist/{_chunks/ca-B2_I-q1t.mjs.map → admin/chunks/es-CiEgbw0k.mjs.map} +1 -1
  31. package/dist/admin/chunks/es-qAL8YcZz.js +121 -0
  32. package/dist/{_chunks/ca-BUpuZx8N.js.map → admin/chunks/es-qAL8YcZz.js.map} +1 -1
  33. package/dist/admin/chunks/fr-BL0Uyj6j.js +145 -0
  34. package/dist/admin/chunks/fr-BL0Uyj6j.js.map +1 -0
  35. package/dist/admin/chunks/fr-CwRt2FJu.mjs +143 -0
  36. package/dist/admin/chunks/fr-CwRt2FJu.mjs.map +1 -0
  37. package/dist/admin/chunks/he-BAmhVpfZ.js +77 -0
  38. package/dist/admin/chunks/he-BAmhVpfZ.js.map +1 -0
  39. package/dist/admin/chunks/he-DdpYNQdt.mjs +75 -0
  40. package/dist/admin/chunks/he-DdpYNQdt.mjs.map +1 -0
  41. package/dist/admin/chunks/index-DAhjYc5x.mjs +7350 -0
  42. package/dist/admin/chunks/index-DAhjYc5x.mjs.map +1 -0
  43. package/dist/admin/chunks/index-jZnIE90w.js +7407 -0
  44. package/dist/admin/chunks/index-jZnIE90w.js.map +1 -0
  45. package/dist/admin/chunks/it-Be4kgSNB.mjs +75 -0
  46. package/dist/admin/chunks/it-Be4kgSNB.mjs.map +1 -0
  47. package/dist/admin/chunks/it-_NQZYepl.js +77 -0
  48. package/dist/admin/chunks/it-_NQZYepl.js.map +1 -0
  49. package/dist/admin/chunks/ja-B75QiyXf.js +77 -0
  50. package/dist/admin/chunks/ja-B75QiyXf.js.map +1 -0
  51. package/dist/admin/chunks/ja-U1NhT0bU.mjs +75 -0
  52. package/dist/admin/chunks/ja-U1NhT0bU.mjs.map +1 -0
  53. package/dist/admin/chunks/ko-BOvUcJqv.js +107 -0
  54. package/dist/{_chunks/pl-esgZ7ltN.js.map → admin/chunks/ko-BOvUcJqv.js.map} +1 -1
  55. package/dist/admin/chunks/ko-BciqXefq.mjs +105 -0
  56. package/dist/{_chunks/de-A7mEKx6c.mjs.map → admin/chunks/ko-BciqXefq.mjs.map} +1 -1
  57. package/dist/admin/chunks/ms-B7Zl6Lm9.js +69 -0
  58. package/dist/admin/chunks/ms-B7Zl6Lm9.js.map +1 -0
  59. package/dist/admin/chunks/ms-D-8McNeg.mjs +67 -0
  60. package/dist/admin/chunks/ms-D-8McNeg.mjs.map +1 -0
  61. package/dist/admin/chunks/pl-DdUYocl5.mjs +104 -0
  62. package/dist/{_chunks/dk-BPfkJb9q.mjs.map → admin/chunks/pl-DdUYocl5.mjs.map} +1 -1
  63. package/dist/admin/chunks/pl-cYDYHOEf.js +106 -0
  64. package/dist/{_chunks/ko-Pzj-818C.js.map → admin/chunks/pl-cYDYHOEf.js.map} +1 -1
  65. package/dist/admin/chunks/pt-BR-D1u_azCM.js +77 -0
  66. package/dist/admin/chunks/pt-BR-D1u_azCM.js.map +1 -0
  67. package/dist/admin/chunks/pt-BR-Demjoq41.mjs +75 -0
  68. package/dist/admin/chunks/pt-BR-Demjoq41.mjs.map +1 -0
  69. package/dist/admin/chunks/pt-D8is2LpS.mjs +75 -0
  70. package/dist/admin/chunks/pt-D8is2LpS.mjs.map +1 -0
  71. package/dist/admin/chunks/pt-L2DZeTPL.js +77 -0
  72. package/dist/admin/chunks/pt-L2DZeTPL.js.map +1 -0
  73. package/dist/admin/chunks/ru-CGgHRTey.mjs +75 -0
  74. package/dist/admin/chunks/ru-CGgHRTey.mjs.map +1 -0
  75. package/dist/admin/chunks/ru-Uxbk_WWv.js +77 -0
  76. package/dist/admin/chunks/ru-Uxbk_WWv.js.map +1 -0
  77. package/dist/admin/chunks/sk-BlLP5HAX.js +123 -0
  78. package/dist/admin/chunks/sk-BlLP5HAX.js.map +1 -0
  79. package/dist/admin/chunks/sk-xtSwaPXq.mjs +121 -0
  80. package/dist/admin/chunks/sk-xtSwaPXq.mjs.map +1 -0
  81. package/dist/admin/chunks/th-BOpLVfmg.mjs +75 -0
  82. package/dist/admin/chunks/th-BOpLVfmg.mjs.map +1 -0
  83. package/dist/admin/chunks/th-DNxPLegS.js +77 -0
  84. package/dist/admin/chunks/th-DNxPLegS.js.map +1 -0
  85. package/dist/admin/chunks/tr-BmAPh-f1.mjs +121 -0
  86. package/dist/admin/chunks/tr-BmAPh-f1.mjs.map +1 -0
  87. package/dist/admin/chunks/tr-DWgXG75k.js +123 -0
  88. package/dist/admin/chunks/tr-DWgXG75k.js.map +1 -0
  89. package/dist/admin/chunks/uk-CMvuEdG-.mjs +72 -0
  90. package/dist/admin/chunks/uk-CMvuEdG-.mjs.map +1 -0
  91. package/dist/admin/chunks/uk-D1_rBLhp.js +74 -0
  92. package/dist/admin/chunks/uk-D1_rBLhp.js.map +1 -0
  93. package/dist/admin/chunks/zh-BIl0qgBy.mjs +128 -0
  94. package/dist/admin/chunks/zh-BIl0qgBy.mjs.map +1 -0
  95. package/dist/admin/chunks/zh-Hans-B1GabBRx.mjs +151 -0
  96. package/dist/{_chunks/zh-Hans-Cpmhg8uH.mjs.map → admin/chunks/zh-Hans-B1GabBRx.mjs.map} +1 -1
  97. package/dist/admin/chunks/zh-Hans-B8qxMQIl.js +153 -0
  98. package/dist/{_chunks/zh-Hans-k_xAc6nm.js.map → admin/chunks/zh-Hans-B8qxMQIl.js.map} +1 -1
  99. package/dist/admin/chunks/zh-MemsyMV6.js +130 -0
  100. package/dist/admin/chunks/zh-MemsyMV6.js.map +1 -0
  101. package/dist/admin/index.js +29 -6
  102. package/dist/admin/index.js.map +1 -1
  103. package/dist/admin/index.mjs +24 -8
  104. package/dist/admin/index.mjs.map +1 -1
  105. package/dist/admin/src/hooks/useMediaLibraryPermissions.d.ts +2 -5
  106. package/dist/admin/src/hooks/useRemoveAsset.d.ts +6 -64
  107. package/dist/server/chunks/graphql-BTbIs_EU.js +116 -0
  108. package/dist/server/chunks/graphql-BTbIs_EU.js.map +1 -0
  109. package/dist/server/chunks/graphql-CCPJbCFt.mjs +114 -0
  110. package/dist/server/chunks/graphql-CCPJbCFt.mjs.map +1 -0
  111. package/dist/server/chunks/index-BU4qzb-i.mjs +3161 -0
  112. package/dist/server/chunks/index-BU4qzb-i.mjs.map +1 -0
  113. package/dist/server/chunks/index-BkUy20d9.js +3164 -0
  114. package/dist/server/chunks/index-BkUy20d9.js.map +1 -0
  115. package/dist/server/index.js +19 -2
  116. package/dist/server/index.js.map +1 -1
  117. package/dist/server/index.mjs +14 -4
  118. package/dist/server/index.mjs.map +1 -1
  119. package/dist/server/src/controllers/validation/admin/folder-file.d.ts.map +1 -1
  120. package/dist/shared/contracts/configuration.d.ts +1 -1
  121. package/dist/shared/contracts/settings.d.ts +1 -1
  122. package/package.json +13 -9
  123. package/dist/_chunks/App-BLY6RlTm.mjs +0 -844
  124. package/dist/_chunks/App-BLY6RlTm.mjs.map +0 -1
  125. package/dist/_chunks/App-DNScJAhi.js +0 -864
  126. package/dist/_chunks/App-DNScJAhi.js.map +0 -1
  127. package/dist/_chunks/ConfigureTheView-CJbBTq0t.js +0 -252
  128. package/dist/_chunks/ConfigureTheView-CJbBTq0t.js.map +0 -1
  129. package/dist/_chunks/ConfigureTheView-Dk28Sh2k.mjs +0 -230
  130. package/dist/_chunks/ConfigureTheView-Dk28Sh2k.mjs.map +0 -1
  131. package/dist/_chunks/SettingsPage-CrvbJCia.js +0 -285
  132. package/dist/_chunks/SettingsPage-CrvbJCia.js.map +0 -1
  133. package/dist/_chunks/SettingsPage-DjNyJDaf.mjs +0 -264
  134. package/dist/_chunks/SettingsPage-DjNyJDaf.mjs.map +0 -1
  135. package/dist/_chunks/ca-B2_I-q1t.mjs +0 -121
  136. package/dist/_chunks/ca-BUpuZx8N.js +0 -121
  137. package/dist/_chunks/de-A7mEKx6c.mjs +0 -107
  138. package/dist/_chunks/de-uGb_Pkq7.js +0 -107
  139. package/dist/_chunks/dk-BPfkJb9q.mjs +0 -103
  140. package/dist/_chunks/dk-Cd8oFO-O.js +0 -103
  141. package/dist/_chunks/en-BcOqhiNe.js +0 -144
  142. package/dist/_chunks/en-oDx2Gnre.mjs +0 -144
  143. package/dist/_chunks/es-CuWi2pOn.mjs +0 -120
  144. package/dist/_chunks/es-DWFtw_h4.js +0 -120
  145. package/dist/_chunks/fr-BN6ndmWf.mjs +0 -144
  146. package/dist/_chunks/fr-BN6ndmWf.mjs.map +0 -1
  147. package/dist/_chunks/fr-D2bop66d.js +0 -144
  148. package/dist/_chunks/fr-D2bop66d.js.map +0 -1
  149. package/dist/_chunks/graphql-DMPTPlvx.mjs +0 -71
  150. package/dist/_chunks/graphql-DMPTPlvx.mjs.map +0 -1
  151. package/dist/_chunks/graphql-QF5Y36Qj.js +0 -71
  152. package/dist/_chunks/graphql-QF5Y36Qj.js.map +0 -1
  153. package/dist/_chunks/he-BpxHjaZg.js +0 -76
  154. package/dist/_chunks/he-BpxHjaZg.js.map +0 -1
  155. package/dist/_chunks/he-C9ZOXBB-.mjs +0 -76
  156. package/dist/_chunks/he-C9ZOXBB-.mjs.map +0 -1
  157. package/dist/_chunks/index-BfAVIhAL.js +0 -6144
  158. package/dist/_chunks/index-BfAVIhAL.js.map +0 -1
  159. package/dist/_chunks/index-D57iKFts.js +0 -2721
  160. package/dist/_chunks/index-D57iKFts.js.map +0 -1
  161. package/dist/_chunks/index-DH9hUSe3.mjs +0 -6119
  162. package/dist/_chunks/index-DH9hUSe3.mjs.map +0 -1
  163. package/dist/_chunks/index-sOlgMDiZ.mjs +0 -2711
  164. package/dist/_chunks/index-sOlgMDiZ.mjs.map +0 -1
  165. package/dist/_chunks/it-B7rmoZNx.mjs +0 -76
  166. package/dist/_chunks/it-B7rmoZNx.mjs.map +0 -1
  167. package/dist/_chunks/it-BKCWXl8t.js +0 -76
  168. package/dist/_chunks/it-BKCWXl8t.js.map +0 -1
  169. package/dist/_chunks/ja-DlaJTi_3.mjs +0 -76
  170. package/dist/_chunks/ja-DlaJTi_3.mjs.map +0 -1
  171. package/dist/_chunks/ja-ajHzIJz6.js +0 -76
  172. package/dist/_chunks/ja-ajHzIJz6.js.map +0 -1
  173. package/dist/_chunks/ko-Pzj-818C.js +0 -106
  174. package/dist/_chunks/ko-vJl9kPpn.mjs +0 -106
  175. package/dist/_chunks/ms-CqwG8v8l.mjs +0 -68
  176. package/dist/_chunks/ms-CqwG8v8l.mjs.map +0 -1
  177. package/dist/_chunks/ms-h3gjldBy.js +0 -68
  178. package/dist/_chunks/ms-h3gjldBy.js.map +0 -1
  179. package/dist/_chunks/pl-Cj8jChOO.mjs +0 -105
  180. package/dist/_chunks/pl-esgZ7ltN.js +0 -105
  181. package/dist/_chunks/pt-BR-B4LJHJIp.mjs +0 -76
  182. package/dist/_chunks/pt-BR-B4LJHJIp.mjs.map +0 -1
  183. package/dist/_chunks/pt-BR-Cazr7Z5I.js +0 -76
  184. package/dist/_chunks/pt-BR-Cazr7Z5I.js.map +0 -1
  185. package/dist/_chunks/pt-CNOOM_7x.mjs +0 -76
  186. package/dist/_chunks/pt-CNOOM_7x.mjs.map +0 -1
  187. package/dist/_chunks/pt-cbUnkHM5.js +0 -76
  188. package/dist/_chunks/pt-cbUnkHM5.js.map +0 -1
  189. package/dist/_chunks/ru-DqglvSUC.mjs +0 -76
  190. package/dist/_chunks/ru-DqglvSUC.mjs.map +0 -1
  191. package/dist/_chunks/ru-H6MzFUxp.js +0 -76
  192. package/dist/_chunks/ru-H6MzFUxp.js.map +0 -1
  193. package/dist/_chunks/sk-CZxC4dFY.js +0 -122
  194. package/dist/_chunks/sk-CZxC4dFY.js.map +0 -1
  195. package/dist/_chunks/sk-Dgpb3lnz.mjs +0 -122
  196. package/dist/_chunks/sk-Dgpb3lnz.mjs.map +0 -1
  197. package/dist/_chunks/th-C6unJZ8j.js +0 -76
  198. package/dist/_chunks/th-C6unJZ8j.js.map +0 -1
  199. package/dist/_chunks/th-DRfzuiFf.mjs +0 -76
  200. package/dist/_chunks/th-DRfzuiFf.mjs.map +0 -1
  201. package/dist/_chunks/tr--GzWXE_A.mjs +0 -122
  202. package/dist/_chunks/tr--GzWXE_A.mjs.map +0 -1
  203. package/dist/_chunks/tr-CY6AwX50.js +0 -122
  204. package/dist/_chunks/tr-CY6AwX50.js.map +0 -1
  205. package/dist/_chunks/uk-BniyNsD4.js +0 -73
  206. package/dist/_chunks/uk-BniyNsD4.js.map +0 -1
  207. package/dist/_chunks/uk-DVMT2Piq.mjs +0 -73
  208. package/dist/_chunks/uk-DVMT2Piq.mjs.map +0 -1
  209. package/dist/_chunks/zh-CsZw0IpM.js +0 -129
  210. package/dist/_chunks/zh-CsZw0IpM.js.map +0 -1
  211. package/dist/_chunks/zh-HOnih0is.mjs +0 -129
  212. package/dist/_chunks/zh-HOnih0is.mjs.map +0 -1
  213. package/dist/_chunks/zh-Hans-Cpmhg8uH.mjs +0 -152
  214. package/dist/_chunks/zh-Hans-k_xAc6nm.js +0 -152
@@ -1,230 +0,0 @@
1
- import { jsx, jsxs } from "react/jsx-runtime";
2
- import * as React from "react";
3
- import { useTracking, useNotification, Layouts, Page, ConfirmDialog } from "@strapi/admin/strapi-admin";
4
- import { Box, Grid, Field, SingleSelect, SingleSelectOption, Link, Button, Dialog } from "@strapi/design-system";
5
- import { ArrowLeft, Check } from "@strapi/icons";
6
- import isEqual from "lodash/isEqual";
7
- import { useIntl } from "react-intl";
8
- import { NavLink } from "react-router-dom";
9
- import { g as getTrad, C as pageSizes, D as sortOptions, p as pluginId, z as useConfig } from "./index-DH9hUSe3.mjs";
10
- import "byte-size";
11
- import "date-fns";
12
- import "qs";
13
- import { produce } from "immer";
14
- import get from "lodash/get";
15
- import set from "lodash/set";
16
- const Settings = ({ sort = "", pageSize = 10, onChange: onChange2 }) => {
17
- const { formatMessage } = useIntl();
18
- return /* @__PURE__ */ jsx(
19
- Box,
20
- {
21
- background: "neutral0",
22
- hasRadius: true,
23
- shadow: "tableShadow",
24
- paddingTop: 6,
25
- paddingBottom: 6,
26
- paddingLeft: 7,
27
- paddingRight: 7,
28
- children: /* @__PURE__ */ jsxs(Grid.Root, { gap: 4, children: [
29
- /* @__PURE__ */ jsx(Grid.Item, { s: 12, col: 6, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxs(
30
- Field.Root,
31
- {
32
- hint: formatMessage({
33
- id: getTrad("config.entries.note"),
34
- defaultMessage: "Number of assets displayed by default in the Media Library"
35
- }),
36
- name: "pageSize",
37
- children: [
38
- /* @__PURE__ */ jsx(Field.Label, { children: formatMessage({
39
- id: getTrad("config.entries.title"),
40
- defaultMessage: "Entries per page"
41
- }) }),
42
- /* @__PURE__ */ jsx(
43
- SingleSelect,
44
- {
45
- onChange: (value) => onChange2({ target: { name: "pageSize", value } }),
46
- value: pageSize,
47
- children: pageSizes.map((pageSize2) => /* @__PURE__ */ jsx(SingleSelectOption, { value: pageSize2, children: pageSize2 }, pageSize2))
48
- }
49
- ),
50
- /* @__PURE__ */ jsx(Field.Hint, {})
51
- ]
52
- }
53
- ) }),
54
- /* @__PURE__ */ jsx(Grid.Item, { s: 12, col: 6, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxs(
55
- Field.Root,
56
- {
57
- hint: formatMessage({
58
- id: getTrad("config.note"),
59
- defaultMessage: "Note: You can override this value in the media library."
60
- }),
61
- name: "sort",
62
- children: [
63
- /* @__PURE__ */ jsx(Field.Label, { children: formatMessage({
64
- id: getTrad("config.sort.title"),
65
- defaultMessage: "Default sort order"
66
- }) }),
67
- /* @__PURE__ */ jsx(
68
- SingleSelect,
69
- {
70
- onChange: (value) => onChange2({ target: { name: "sort", value } }),
71
- value: sort,
72
- "test-sort": sort,
73
- "data-testid": "sort-select",
74
- children: sortOptions.map((filter) => /* @__PURE__ */ jsx(
75
- SingleSelectOption,
76
- {
77
- "data-testid": `sort-option-${filter.value}`,
78
- value: filter.value,
79
- children: formatMessage({ id: getTrad(filter.key), defaultMessage: `${filter.value}` })
80
- },
81
- filter.key
82
- ))
83
- }
84
- ),
85
- /* @__PURE__ */ jsx(Field.Hint, {})
86
- ]
87
- }
88
- ) })
89
- ] })
90
- }
91
- );
92
- };
93
- const ON_CHANGE = `${pluginId}/ON_CHANGE`;
94
- const SET_LOADED = `${pluginId}/SET_LOADED`;
95
- const onChange = ({
96
- name,
97
- value
98
- }) => ({
99
- type: ON_CHANGE,
100
- keys: name,
101
- value
102
- });
103
- const setLoaded = () => ({
104
- type: SET_LOADED
105
- });
106
- const initialState = {
107
- initialData: {},
108
- modifiedData: {}
109
- };
110
- const init = (configData) => {
111
- return {
112
- ...initialState,
113
- initialData: configData,
114
- modifiedData: configData
115
- };
116
- };
117
- const reducer = (state = initialState, action = {
118
- type: ""
119
- }) => (
120
- // eslint-disable-next-line consistent-return
121
- produce(state, (draftState) => {
122
- switch (action.type) {
123
- case ON_CHANGE: {
124
- if ("keys" in action && "value" in action && action.keys) {
125
- set(draftState, ["modifiedData", ...action.keys.split(".")], action.value);
126
- }
127
- break;
128
- }
129
- case SET_LOADED: {
130
- const reInitialise = init(get(draftState, ["modifiedData"], {}));
131
- draftState.initialData = reInitialise.initialData;
132
- draftState.modifiedData = reInitialise.modifiedData;
133
- break;
134
- }
135
- default:
136
- return draftState;
137
- }
138
- })
139
- );
140
- const ConfigureTheView = ({ config }) => {
141
- const { trackUsage } = useTracking();
142
- const { formatMessage } = useIntl();
143
- const { toggleNotification } = useNotification();
144
- const { mutateConfig } = useConfig();
145
- const { isLoading: isSubmittingForm } = mutateConfig;
146
- const [showWarningSubmit, setWarningSubmit] = React.useState(false);
147
- const toggleWarningSubmit = () => setWarningSubmit((prevState) => !prevState);
148
- const [reducerState, dispatch] = React.useReducer(
149
- reducer,
150
- initialState,
151
- () => init(config)
152
- );
153
- const typedDispatch = dispatch;
154
- const { initialData, modifiedData } = reducerState;
155
- const handleSubmit = (e) => {
156
- e.preventDefault();
157
- toggleWarningSubmit();
158
- };
159
- const handleConfirm = async () => {
160
- trackUsage("willEditMediaLibraryConfig");
161
- await mutateConfig.mutateAsync(modifiedData);
162
- setWarningSubmit(false);
163
- typedDispatch(setLoaded());
164
- toggleNotification({
165
- type: "success",
166
- message: formatMessage({
167
- id: "notification.form.success.fields",
168
- defaultMessage: "Changes saved"
169
- })
170
- });
171
- };
172
- const handleChange = ({
173
- target: { name, value }
174
- }) => {
175
- typedDispatch(onChange({ name, value }));
176
- };
177
- return /* @__PURE__ */ jsx(Layouts.Root, { children: /* @__PURE__ */ jsx(Page.Main, { "aria-busy": isSubmittingForm, children: /* @__PURE__ */ jsxs("form", { onSubmit: handleSubmit, children: [
178
- /* @__PURE__ */ jsx(
179
- Layouts.Header,
180
- {
181
- navigationAction: /* @__PURE__ */ jsx(
182
- Link,
183
- {
184
- tag: NavLink,
185
- startIcon: /* @__PURE__ */ jsx(ArrowLeft, {}),
186
- to: `/plugins/${pluginId}`,
187
- id: "go-back",
188
- children: formatMessage({ id: getTrad("config.back"), defaultMessage: "Back" })
189
- }
190
- ),
191
- primaryAction: /* @__PURE__ */ jsx(
192
- Button,
193
- {
194
- size: "S",
195
- startIcon: /* @__PURE__ */ jsx(Check, {}),
196
- disabled: isEqual(modifiedData, initialData),
197
- type: "submit",
198
- children: formatMessage({ id: "global.save", defaultMessage: "Save" })
199
- }
200
- ),
201
- subtitle: formatMessage({
202
- id: getTrad("config.subtitle"),
203
- defaultMessage: "Define the view settings of the media library."
204
- }),
205
- title: formatMessage({
206
- id: getTrad("config.title"),
207
- defaultMessage: "Configure the view - Media Library"
208
- })
209
- }
210
- ),
211
- /* @__PURE__ */ jsx(Layouts.Content, { children: /* @__PURE__ */ jsx(
212
- Settings,
213
- {
214
- "data-testid": "settings",
215
- pageSize: modifiedData.pageSize || "",
216
- sort: modifiedData.sort || "",
217
- onChange: handleChange
218
- }
219
- ) }),
220
- "x",
221
- /* @__PURE__ */ jsx(Dialog.Root, { open: showWarningSubmit, onOpenChange: toggleWarningSubmit, children: /* @__PURE__ */ jsx(ConfirmDialog, { onConfirm: handleConfirm, variant: "default", children: formatMessage({
222
- id: getTrad("config.popUpWarning.warning.updateAllSettings"),
223
- defaultMessage: "This will modify all your settings"
224
- }) }) })
225
- ] }) }) });
226
- };
227
- export {
228
- ConfigureTheView
229
- };
230
- //# sourceMappingURL=ConfigureTheView-Dk28Sh2k.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConfigureTheView-Dk28Sh2k.mjs","sources":["../../admin/src/pages/App/ConfigureTheView/components/Settings.tsx","../../admin/src/pages/App/ConfigureTheView/state/actionTypes.ts","../../admin/src/pages/App/ConfigureTheView/state/actions.ts","../../admin/src/pages/App/ConfigureTheView/state/init.ts","../../admin/src/pages/App/ConfigureTheView/state/reducer.ts","../../admin/src/pages/App/ConfigureTheView/ConfigureTheView.tsx"],"sourcesContent":["import { Box, Grid, SingleSelectOption, SingleSelect, Field } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { pageSizes, sortOptions } from '../../../../constants';\nimport { getTrad } from '../../../../utils';\n\nimport type { Configuration } from '../../../../../../shared/contracts/configuration';\n\ninterface SettingsProps {\n sort: string;\n pageSize: string | number;\n onChange: ({\n target: { name, value },\n }: {\n target: { name: keyof Configuration; value: string | number };\n }) => void;\n}\n\nconst Settings = ({ sort = '', pageSize = 10, onChange }: SettingsProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Grid.Root gap={4}>\n <Grid.Item s={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('config.entries.note'),\n defaultMessage: 'Number of assets displayed by default in the Media Library',\n })}\n name=\"pageSize\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('config.entries.title'),\n defaultMessage: 'Entries per page',\n })}\n </Field.Label>\n <SingleSelect\n onChange={(value) => onChange({ target: { name: 'pageSize', value } })}\n value={pageSize}\n >\n {pageSizes.map((pageSize) => (\n <SingleSelectOption key={pageSize} value={pageSize}>\n {pageSize}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item s={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('config.note'),\n defaultMessage: 'Note: You can override this value in the media library.',\n })}\n name=\"sort\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('config.sort.title'),\n defaultMessage: 'Default sort order',\n })}\n </Field.Label>\n <SingleSelect\n onChange={(value) => onChange({ target: { name: 'sort', value } })}\n value={sort}\n test-sort={sort}\n data-testid=\"sort-select\"\n >\n {sortOptions.map((filter) => (\n <SingleSelectOption\n data-testid={`sort-option-${filter.value}`}\n key={filter.key}\n value={filter.value}\n >\n {formatMessage({ id: getTrad(filter.key), defaultMessage: `${filter.value}` })}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Box>\n );\n};\n\nexport { Settings };\n","import { pluginId } from '../../../../pluginId';\n\nexport const ON_CHANGE = `${pluginId}/ON_CHANGE`;\nexport const SET_LOADED = `${pluginId}/SET_LOADED`;\n","import { ON_CHANGE, SET_LOADED } from './actionTypes';\n\nimport type { InitialState } from './init';\n\nexport const onChange = ({\n name,\n value,\n}: {\n name: keyof NonNullable<InitialState['initialData']>;\n value: number | string;\n}) => ({\n type: ON_CHANGE,\n keys: name,\n value,\n});\n\nexport const setLoaded = () => ({\n type: SET_LOADED,\n});\n","import type { Configuration } from '../../../../../../shared/contracts/configuration';\n\nexport type InitialState = {\n initialData: Partial<Configuration>;\n modifiedData: Partial<Configuration>;\n};\n\nconst initialState: InitialState = {\n initialData: {},\n modifiedData: {},\n};\n\nconst init = (configData: InitialState['initialData']): InitialState => {\n return {\n ...initialState,\n initialData: configData,\n modifiedData: configData,\n };\n};\nexport { init, initialState };\n","import { produce } from 'immer'; // current\nimport get from 'lodash/get';\nimport set from 'lodash/set';\n\nimport { ON_CHANGE, SET_LOADED } from './actionTypes';\nimport { init, initialState } from './init';\n\nimport type { InitialState } from './init';\n\nexport interface ActionOnChange {\n type: string;\n keys?: string;\n value: string | number;\n}\n\nexport interface ActionSetLoaded {\n type: string;\n}\n\ninterface ActionInitialValue {\n type: string;\n}\n\nexport type Action = ActionSetLoaded | ActionOnChange | ActionInitialValue;\n\nexport const reducer = (\n state: InitialState = initialState,\n action: Action = {\n type: '',\n }\n) =>\n // eslint-disable-next-line consistent-return\n produce(state, (draftState) => {\n switch (action.type) {\n case ON_CHANGE: {\n if ('keys' in action && 'value' in action && action.keys) {\n set(draftState, ['modifiedData', ...action.keys.split('.')], action.value);\n }\n break;\n }\n case SET_LOADED: {\n // This action re-initialises the state using the current modifiedData.\n const reInitialise = init(get(draftState, ['modifiedData'], {}));\n draftState.initialData = reInitialise.initialData;\n draftState.modifiedData = reInitialise.modifiedData;\n break;\n }\n default:\n return draftState;\n }\n });\n","// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport {\n ConfirmDialog,\n useTracking,\n useNotification,\n Page,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Dialog, Link } from '@strapi/design-system';\nimport { ArrowLeft, Check } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\n\nimport { useConfig } from '../../../hooks/useConfig';\nimport { pluginId } from '../../../pluginId';\nimport { getTrad } from '../../../utils';\n\nimport { Settings } from './components/Settings';\nimport { onChange, setLoaded } from './state/actions';\nimport { init, initialState } from './state/init';\nimport { reducer } from './state/reducer';\n\nimport type { InitialState } from './state/init';\nimport type { Action } from './state/reducer';\nimport type { Configuration } from '../../../../../shared/contracts/configuration';\n\ninterface ConfigureTheViewProps {\n config: Configuration;\n}\n\nexport const ConfigureTheView = ({ config }: ConfigureTheViewProps) => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { mutateConfig } = useConfig();\n const { isLoading: isSubmittingForm } = mutateConfig;\n\n const [showWarningSubmit, setWarningSubmit] = React.useState(false);\n const toggleWarningSubmit = () => setWarningSubmit((prevState) => !prevState);\n\n const [reducerState, dispatch] = React.useReducer(\n reducer,\n initialState,\n (): InitialState => init(config)\n );\n const typedDispatch: React.Dispatch<Action> = dispatch;\n const { initialData, modifiedData } = reducerState;\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n toggleWarningSubmit();\n };\n\n const handleConfirm = async () => {\n trackUsage('willEditMediaLibraryConfig');\n await mutateConfig.mutateAsync(modifiedData as Configuration);\n setWarningSubmit(false);\n typedDispatch(setLoaded());\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.form.success.fields',\n defaultMessage: 'Changes saved',\n }),\n });\n };\n\n const handleChange = ({\n target: { name, value },\n }: {\n target: { name: keyof Configuration; value: string | number };\n }) => {\n typedDispatch(onChange({ name, value }));\n };\n\n return (\n <Layouts.Root>\n <Page.Main aria-busy={isSubmittingForm}>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n navigationAction={\n <Link\n tag={NavLink}\n startIcon={<ArrowLeft />}\n to={`/plugins/${pluginId}`}\n id=\"go-back\"\n >\n {formatMessage({ id: getTrad('config.back'), defaultMessage: 'Back' })}\n </Link>\n }\n primaryAction={\n <Button\n size=\"S\"\n startIcon={<Check />}\n disabled={isEqual(modifiedData, initialData)}\n type=\"submit\"\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTrad('config.subtitle'),\n defaultMessage: 'Define the view settings of the media library.',\n })}\n title={formatMessage({\n id: getTrad('config.title'),\n defaultMessage: 'Configure the view - Media Library',\n })}\n />\n <Layouts.Content>\n <Settings\n data-testid=\"settings\"\n pageSize={modifiedData.pageSize || ''}\n sort={modifiedData.sort || ''}\n onChange={handleChange}\n />\n </Layouts.Content>\n x\n <Dialog.Root open={showWarningSubmit} onOpenChange={toggleWarningSubmit}>\n <ConfirmDialog onConfirm={handleConfirm} variant=\"default\">\n {formatMessage({\n id: getTrad('config.popUpWarning.warning.updateAllSettings'),\n defaultMessage: 'This will modify all your settings',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </form>\n </Page.Main>\n </Layouts.Root>\n );\n};\n"],"names":["onChange","pageSize"],"mappings":"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"}
@@ -1,285 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const jsxRuntime = require("react/jsx-runtime");
4
- const React = require("react");
5
- const strapiAdmin = require("@strapi/admin/strapi-admin");
6
- const designSystem = require("@strapi/design-system");
7
- const icons = require("@strapi/icons");
8
- const isEqual = require("lodash/isEqual");
9
- const reactIntl = require("react-intl");
10
- const reactQuery = require("react-query");
11
- const index = require("./index-BfAVIhAL.js");
12
- require("byte-size");
13
- require("date-fns");
14
- require("qs");
15
- const immer = require("immer");
16
- const set = require("lodash/set");
17
- const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
18
- function _interopNamespace(e) {
19
- if (e && e.__esModule) return e;
20
- const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
21
- if (e) {
22
- for (const k in e) {
23
- if (k !== "default") {
24
- const d = Object.getOwnPropertyDescriptor(e, k);
25
- Object.defineProperty(n, k, d.get ? d : {
26
- enumerable: true,
27
- get: () => e[k]
28
- });
29
- }
30
- }
31
- }
32
- n.default = e;
33
- return Object.freeze(n);
34
- }
35
- const React__namespace = /* @__PURE__ */ _interopNamespace(React);
36
- const isEqual__default = /* @__PURE__ */ _interopDefault(isEqual);
37
- const set__default = /* @__PURE__ */ _interopDefault(set);
38
- const init = (initialState2) => {
39
- return initialState2;
40
- };
41
- const initialState = {
42
- initialData: {
43
- responsiveDimensions: true,
44
- sizeOptimization: true,
45
- autoOrientation: false,
46
- videoPreview: false
47
- },
48
- modifiedData: {
49
- responsiveDimensions: true,
50
- sizeOptimization: true,
51
- autoOrientation: false,
52
- videoPreview: false
53
- }
54
- };
55
- const reducer = (state, action) => immer.produce(state, (drafState) => {
56
- switch (action.type) {
57
- case "GET_DATA_SUCCEEDED": {
58
- drafState.initialData = action.data;
59
- drafState.modifiedData = action.data;
60
- break;
61
- }
62
- case "ON_CHANGE": {
63
- set__default.default(drafState, ["modifiedData", ...action.keys.split(".")], action.value);
64
- break;
65
- }
66
- default:
67
- return state;
68
- }
69
- });
70
- const SettingsPage = () => {
71
- const { formatMessage } = reactIntl.useIntl();
72
- const { toggleNotification } = strapiAdmin.useNotification();
73
- const { get, put } = strapiAdmin.useFetchClient();
74
- const [{ initialData, modifiedData }, dispatch] = React__namespace.useReducer(reducer, initialState, init);
75
- const { data, isLoading, refetch } = reactQuery.useQuery({
76
- queryKey: ["upload", "settings"],
77
- async queryFn() {
78
- const {
79
- data: { data: data2 }
80
- } = await get("/upload/settings");
81
- return data2;
82
- }
83
- });
84
- React__namespace.useEffect(() => {
85
- if (data) {
86
- dispatch({
87
- type: "GET_DATA_SUCCEEDED",
88
- data
89
- });
90
- }
91
- }, [data]);
92
- const isSaveButtonDisabled = isEqual__default.default(initialData, modifiedData);
93
- const { mutateAsync, isLoading: isSubmitting } = reactQuery.useMutation(
94
- async (body) => {
95
- const { data: data2 } = await put("/upload/settings", body);
96
- return data2;
97
- },
98
- {
99
- onSuccess() {
100
- refetch();
101
- toggleNotification({
102
- type: "success",
103
- message: formatMessage({ id: "notification.form.success.fields" })
104
- });
105
- },
106
- onError(err) {
107
- console.error(err);
108
- }
109
- }
110
- );
111
- const handleSubmit = async (e) => {
112
- e.preventDefault();
113
- if (isSaveButtonDisabled) {
114
- return;
115
- }
116
- await mutateAsync(modifiedData);
117
- };
118
- const handleChange = ({
119
- target: { name, value }
120
- }) => {
121
- dispatch({
122
- type: "ON_CHANGE",
123
- keys: name,
124
- value
125
- });
126
- };
127
- if (isLoading) {
128
- return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
129
- }
130
- return /* @__PURE__ */ jsxRuntime.jsxs(strapiAdmin.Page.Main, { tabIndex: -1, children: [
131
- /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Title, { children: formatMessage({
132
- id: index.getTrad("page.title"),
133
- defaultMessage: "Settings - Media Libray"
134
- }) }),
135
- /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: handleSubmit, children: [
136
- /* @__PURE__ */ jsxRuntime.jsx(
137
- strapiAdmin.Layouts.Header,
138
- {
139
- title: formatMessage({
140
- id: index.getTrad("settings.header.label"),
141
- defaultMessage: "Media Library"
142
- }),
143
- primaryAction: /* @__PURE__ */ jsxRuntime.jsx(
144
- designSystem.Button,
145
- {
146
- disabled: isSaveButtonDisabled,
147
- loading: isSubmitting,
148
- type: "submit",
149
- startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Check, {}),
150
- size: "S",
151
- children: formatMessage({
152
- id: "global.save",
153
- defaultMessage: "Save"
154
- })
155
- }
156
- ),
157
- subtitle: formatMessage({
158
- id: index.getTrad("settings.sub-header.label"),
159
- defaultMessage: "Configure the settings for the Media Library"
160
- })
161
- }
162
- ),
163
- /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Layouts.Content, { children: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Layouts.Root, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 12, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { background: "neutral0", padding: 6, shadow: "filterShadow", hasRadius: true, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 4, children: [
164
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", tag: "h2", children: formatMessage({
165
- id: index.getTrad("settings.blockTitle"),
166
- defaultMessage: "Asset management"
167
- }) }) }),
168
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid.Root, { gap: 6, children: [
169
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, s: 12, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsxs(
170
- designSystem.Field.Root,
171
- {
172
- hint: formatMessage({
173
- id: index.getTrad("settings.form.responsiveDimensions.description"),
174
- defaultMessage: "Enabling this option will generate multiple formats (small, medium and large) of the uploaded asset."
175
- }),
176
- name: "responsiveDimensions",
177
- children: [
178
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
179
- id: index.getTrad("settings.form.responsiveDimensions.label"),
180
- defaultMessage: "Responsive friendly upload"
181
- }) }),
182
- /* @__PURE__ */ jsxRuntime.jsx(
183
- designSystem.Toggle,
184
- {
185
- checked: modifiedData?.responsiveDimensions,
186
- offLabel: formatMessage({
187
- id: "app.components.ToggleCheckbox.off-label",
188
- defaultMessage: "Off"
189
- }),
190
- onLabel: formatMessage({
191
- id: "app.components.ToggleCheckbox.on-label",
192
- defaultMessage: "On"
193
- }),
194
- onChange: (e) => {
195
- handleChange({
196
- target: { name: "responsiveDimensions", value: e.target.checked }
197
- });
198
- }
199
- }
200
- ),
201
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {})
202
- ]
203
- }
204
- ) }),
205
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, s: 12, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsxs(
206
- designSystem.Field.Root,
207
- {
208
- hint: formatMessage({
209
- id: index.getTrad("settings.form.sizeOptimization.description"),
210
- defaultMessage: "Enabling this option will reduce the image size and slightly reduce its quality."
211
- }),
212
- name: "sizeOptimization",
213
- children: [
214
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
215
- id: index.getTrad("settings.form.sizeOptimization.label"),
216
- defaultMessage: "Size optimization"
217
- }) }),
218
- /* @__PURE__ */ jsxRuntime.jsx(
219
- designSystem.Toggle,
220
- {
221
- checked: modifiedData?.sizeOptimization,
222
- offLabel: formatMessage({
223
- id: "app.components.ToggleCheckbox.off-label",
224
- defaultMessage: "Off"
225
- }),
226
- onLabel: formatMessage({
227
- id: "app.components.ToggleCheckbox.on-label",
228
- defaultMessage: "On"
229
- }),
230
- onChange: (e) => {
231
- handleChange({
232
- target: { name: "sizeOptimization", value: e.target.checked }
233
- });
234
- }
235
- }
236
- ),
237
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {})
238
- ]
239
- }
240
- ) }),
241
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, s: 12, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsxs(
242
- designSystem.Field.Root,
243
- {
244
- hint: formatMessage({
245
- id: index.getTrad("settings.form.autoOrientation.description"),
246
- defaultMessage: "Enabling this option will automatically rotate the image according to EXIF orientation tag."
247
- }),
248
- name: "autoOrientation",
249
- children: [
250
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
251
- id: index.getTrad("settings.form.autoOrientation.label"),
252
- defaultMessage: "Auto orientation"
253
- }) }),
254
- /* @__PURE__ */ jsxRuntime.jsx(
255
- designSystem.Toggle,
256
- {
257
- checked: modifiedData?.autoOrientation,
258
- offLabel: formatMessage({
259
- id: "app.components.ToggleCheckbox.off-label",
260
- defaultMessage: "Off"
261
- }),
262
- onLabel: formatMessage({
263
- id: "app.components.ToggleCheckbox.on-label",
264
- defaultMessage: "On"
265
- }),
266
- onChange: (e) => {
267
- handleChange({
268
- target: { name: "autoOrientation", value: e.target.checked }
269
- });
270
- }
271
- }
272
- ),
273
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {})
274
- ]
275
- }
276
- ) })
277
- ] })
278
- ] }) }) }) }) })
279
- ] })
280
- ] });
281
- };
282
- const ProtectedSettingsPage = () => /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Protect, { permissions: index.PERMISSIONS.settings, children: /* @__PURE__ */ jsxRuntime.jsx(SettingsPage, {}) });
283
- exports.ProtectedSettingsPage = ProtectedSettingsPage;
284
- exports.SettingsPage = SettingsPage;
285
- //# sourceMappingURL=SettingsPage-CrvbJCia.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SettingsPage-CrvbJCia.js","sources":["../../admin/src/pages/SettingsPage/init.ts","../../admin/src/pages/SettingsPage/reducer.ts","../../admin/src/pages/SettingsPage/SettingsPage.tsx"],"sourcesContent":["import type { InitialState } from './reducer';\n\nexport const init = (initialState: InitialState) => {\n return initialState;\n};\n","import { produce } from 'immer';\nimport set from 'lodash/set';\n\nexport type InitialState = {\n initialData: {\n responsiveDimensions?: boolean;\n sizeOptimization?: boolean;\n autoOrientation?: boolean;\n videoPreview?: boolean;\n } | null;\n modifiedData: {\n responsiveDimensions?: boolean;\n sizeOptimization?: boolean;\n autoOrientation?: boolean;\n videoPreview?: boolean;\n } | 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 responsiveDimensions: true,\n sizeOptimization: true,\n autoOrientation: false,\n videoPreview: false,\n },\n modifiedData: {\n responsiveDimensions: true,\n sizeOptimization: true,\n autoOrientation: false,\n videoPreview: false,\n },\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","// 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":["initialState","produce","set","useIntl","useNotification","useFetchClient","React","useQuery","data","isEqual","useMutation","jsx","Page","jsxs","getTrad","Layouts","Button","Check","Flex","Box","Typography","Grid","Field","Toggle","PERMISSIONS"],"mappings":"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"}