@strapi/content-manager 0.0.0-experimental.fed75ee8e64c57dbed0b670b25ef026b69baab10 → 0.0.0-next.0af49f5c5ec496b0fad61ac9bfd4d0127b89d8d3

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 (197) hide show
  1. package/dist/_chunks/CardDragPreview-C0QyJgRA.js.map +1 -1
  2. package/dist/_chunks/CardDragPreview-DOxamsuj.mjs.map +1 -1
  3. package/dist/_chunks/{ComponentConfigurationPage-DNRPa10q.js → ComponentConfigurationPage-BLWQy8ru.js} +5 -6
  4. package/dist/_chunks/{ComponentConfigurationPage-DNRPa10q.js.map → ComponentConfigurationPage-BLWQy8ru.js.map} +1 -1
  5. package/dist/_chunks/{ComponentConfigurationPage-BVM7LScS.mjs → ComponentConfigurationPage-CtIa3aa2.mjs} +4 -4
  6. package/dist/_chunks/{ComponentConfigurationPage-BVM7LScS.mjs.map → ComponentConfigurationPage-CtIa3aa2.mjs.map} +1 -1
  7. package/dist/_chunks/{ComponentIcon-BXdiCGQp.js → ComponentIcon-CRbtQEUV.js} +2 -3
  8. package/dist/_chunks/{ComponentIcon-BXdiCGQp.js.map → ComponentIcon-CRbtQEUV.js.map} +1 -1
  9. package/dist/_chunks/ComponentIcon-u4bIXTFY.mjs.map +1 -1
  10. package/dist/_chunks/{EditConfigurationPage-BWq-9Zhk.mjs → EditConfigurationPage-DsPR2DVk.mjs} +4 -4
  11. package/dist/_chunks/{EditConfigurationPage-BWq-9Zhk.mjs.map → EditConfigurationPage-DsPR2DVk.mjs.map} +1 -1
  12. package/dist/_chunks/{EditConfigurationPage-BrG0mEfF.js → EditConfigurationPage-RQkymxCy.js} +5 -6
  13. package/dist/_chunks/{EditConfigurationPage-BrG0mEfF.js.map → EditConfigurationPage-RQkymxCy.js.map} +1 -1
  14. package/dist/_chunks/{EditViewPage-BbY0bNNE.js → EditViewPage-B-kExt8C.js} +38 -9
  15. package/dist/_chunks/EditViewPage-B-kExt8C.js.map +1 -0
  16. package/dist/_chunks/{EditViewPage-Dx0QnTxn.mjs → EditViewPage-BPyVuPfM.mjs} +38 -8
  17. package/dist/_chunks/EditViewPage-BPyVuPfM.mjs.map +1 -0
  18. package/dist/_chunks/{Field-CglKum3X.js → Field-DPIsQRre.js} +178 -123
  19. package/dist/_chunks/Field-DPIsQRre.js.map +1 -0
  20. package/dist/_chunks/{Field-DVZSGAon.mjs → Field-Dltnt1km.mjs} +176 -121
  21. package/dist/_chunks/Field-Dltnt1km.mjs.map +1 -0
  22. package/dist/_chunks/FieldTypeIcon-CMlNO8PE.mjs.map +1 -1
  23. package/dist/_chunks/FieldTypeIcon-Dnwq_IRF.js.map +1 -1
  24. package/dist/_chunks/{Form-B7nYNIUm.js → Form-BFi4MXMT.js} +5 -6
  25. package/dist/_chunks/{Form-B7nYNIUm.js.map → Form-BFi4MXMT.js.map} +1 -1
  26. package/dist/_chunks/{Form-BQwxPqu3.mjs → Form-C1IcWm1u.mjs} +3 -3
  27. package/dist/_chunks/{Form-BQwxPqu3.mjs.map → Form-C1IcWm1u.mjs.map} +1 -1
  28. package/dist/_chunks/{History-Bmu6tx6s.mjs → History-04ChQ4pl.mjs} +51 -97
  29. package/dist/_chunks/History-04ChQ4pl.mjs.map +1 -0
  30. package/dist/_chunks/{History-3JN4BIS1.js → History-wjcK4L0C.js} +51 -98
  31. package/dist/_chunks/History-wjcK4L0C.js.map +1 -0
  32. package/dist/_chunks/{ListConfigurationPage-DwijcJ17.mjs → ListConfigurationPage-BYqPYLSU.mjs} +7 -6
  33. package/dist/_chunks/ListConfigurationPage-BYqPYLSU.mjs.map +1 -0
  34. package/dist/_chunks/{ListConfigurationPage-BcC28SV0.js → ListConfigurationPage-CRbxIC3J.js} +7 -7
  35. package/dist/_chunks/ListConfigurationPage-CRbxIC3J.js.map +1 -0
  36. package/dist/_chunks/{ListViewPage-ZPNQ6jWC.js → ListViewPage-D5NY9183.js} +63 -41
  37. package/dist/_chunks/ListViewPage-D5NY9183.js.map +1 -0
  38. package/dist/_chunks/{ListViewPage-DzhuS3CW.mjs → ListViewPage-FU2LBuhl.mjs} +62 -39
  39. package/dist/_chunks/ListViewPage-FU2LBuhl.mjs.map +1 -0
  40. package/dist/_chunks/{NoContentTypePage-DzwJNXvn.js → NoContentTypePage-BgQVE_Qb.js} +2 -2
  41. package/dist/_chunks/{NoContentTypePage-DzwJNXvn.js.map → NoContentTypePage-BgQVE_Qb.js.map} +1 -1
  42. package/dist/_chunks/{NoContentTypePage-BKMgOyd3.mjs → NoContentTypePage-DCKUkwb8.mjs} +2 -2
  43. package/dist/_chunks/{NoContentTypePage-BKMgOyd3.mjs.map → NoContentTypePage-DCKUkwb8.mjs.map} +1 -1
  44. package/dist/_chunks/{NoPermissionsPage-GaweP-NG.js → NoPermissionsPage-C5jwn70o.js} +2 -2
  45. package/dist/_chunks/{NoPermissionsPage-GaweP-NG.js.map → NoPermissionsPage-C5jwn70o.js.map} +1 -1
  46. package/dist/_chunks/{NoPermissionsPage-DBbGJqL9.mjs → NoPermissionsPage-jqve7C8l.mjs} +2 -2
  47. package/dist/_chunks/{NoPermissionsPage-DBbGJqL9.mjs.map → NoPermissionsPage-jqve7C8l.mjs.map} +1 -1
  48. package/dist/_chunks/Preview-BMYN548c.mjs +294 -0
  49. package/dist/_chunks/Preview-BMYN548c.mjs.map +1 -0
  50. package/dist/_chunks/Preview-DaOihysv.js +312 -0
  51. package/dist/_chunks/Preview-DaOihysv.js.map +1 -0
  52. package/dist/_chunks/{Relations-BHXq_cKF.js → Relations-CTGM7Hv5.js} +47 -24
  53. package/dist/_chunks/Relations-CTGM7Hv5.js.map +1 -0
  54. package/dist/_chunks/{Relations-B7VtRA3g.mjs → Relations-gscPkxjF.mjs} +47 -23
  55. package/dist/_chunks/Relations-gscPkxjF.mjs.map +1 -0
  56. package/dist/_chunks/{en-Bm0D0IWz.js → en-BzQmavmK.js} +21 -4
  57. package/dist/_chunks/{en-Bm0D0IWz.js.map → en-BzQmavmK.js.map} +1 -1
  58. package/dist/_chunks/{en-DKV44jRb.mjs → en-CSxLmrh1.mjs} +21 -4
  59. package/dist/_chunks/{en-DKV44jRb.mjs.map → en-CSxLmrh1.mjs.map} +1 -1
  60. package/dist/_chunks/{es-EUonQTon.js → es-9K52xZIr.js} +2 -2
  61. package/dist/_chunks/{ja-CcFe8diO.js.map → es-9K52xZIr.js.map} +1 -1
  62. package/dist/_chunks/{es-CeXiYflN.mjs → es-D34tqjMw.mjs} +2 -2
  63. package/dist/_chunks/{es-CeXiYflN.mjs.map → es-D34tqjMw.mjs.map} +1 -1
  64. package/dist/_chunks/{fr-CD9VFbPM.mjs → fr--pg5jUbt.mjs} +13 -3
  65. package/dist/_chunks/{fr-CD9VFbPM.mjs.map → fr--pg5jUbt.mjs.map} +1 -1
  66. package/dist/_chunks/{fr-B7kGGg3E.js → fr-B2Kyv8Z9.js} +13 -3
  67. package/dist/_chunks/{fr-B7kGGg3E.js.map → fr-B2Kyv8Z9.js.map} +1 -1
  68. package/dist/_chunks/hooks-BAaaKPS_.js.map +1 -1
  69. package/dist/_chunks/{index-DcA8_tJw.js → index-Ca7YWlAA.js} +388 -224
  70. package/dist/_chunks/index-Ca7YWlAA.js.map +1 -0
  71. package/dist/_chunks/{index-TaRzG09p.mjs → index-DqasUQ6Q.mjs} +390 -226
  72. package/dist/_chunks/index-DqasUQ6Q.mjs.map +1 -0
  73. package/dist/_chunks/{ja-CcFe8diO.js → ja-7sfIbjxE.js} +2 -2
  74. package/dist/_chunks/{es-EUonQTon.js.map → ja-7sfIbjxE.js.map} +1 -1
  75. package/dist/_chunks/{ja-CtsUxOvk.mjs → ja-BHqhDq4V.mjs} +2 -2
  76. package/dist/_chunks/{ja-CtsUxOvk.mjs.map → ja-BHqhDq4V.mjs.map} +1 -1
  77. package/dist/_chunks/{layout-CrgXpOxT.js → layout-BW80JSCd.js} +5 -6
  78. package/dist/_chunks/{layout-CrgXpOxT.js.map → layout-BW80JSCd.js.map} +1 -1
  79. package/dist/_chunks/{layout-aX-RJhd5.mjs → layout-W3clJSCy.mjs} +4 -4
  80. package/dist/_chunks/{layout-aX-RJhd5.mjs.map → layout-W3clJSCy.mjs.map} +1 -1
  81. package/dist/_chunks/{objects-gigeqt7s.js → objects-BcXOv6_9.js} +2 -4
  82. package/dist/_chunks/{objects-gigeqt7s.js.map → objects-BcXOv6_9.js.map} +1 -1
  83. package/dist/_chunks/{objects-mKMAmfec.mjs → objects-D6yBsdmx.mjs} +2 -4
  84. package/dist/_chunks/{objects-mKMAmfec.mjs.map → objects-D6yBsdmx.mjs.map} +1 -1
  85. package/dist/_chunks/{relations-D3Hlx6QX.mjs → relations-BlDkoeWh.mjs} +6 -7
  86. package/dist/_chunks/relations-BlDkoeWh.mjs.map +1 -0
  87. package/dist/_chunks/{relations-Z6RA1sBS.js → relations-C9Usz9k5.js} +6 -7
  88. package/dist/_chunks/relations-C9Usz9k5.js.map +1 -0
  89. package/dist/_chunks/useDebounce-CtcjDB3L.js.map +1 -1
  90. package/dist/_chunks/useDebounce-DmuSJIF3.mjs.map +1 -1
  91. package/dist/_chunks/{useDragAndDrop-J0TUUbR6.js → useDragAndDrop-BMtgCYzL.js} +5 -9
  92. package/dist/_chunks/{useDragAndDrop-J0TUUbR6.js.map → useDragAndDrop-BMtgCYzL.js.map} +1 -1
  93. package/dist/_chunks/{useDragAndDrop-DdHgKsqq.mjs → useDragAndDrop-DJ6jqvZN.mjs} +4 -7
  94. package/dist/_chunks/{useDragAndDrop-DdHgKsqq.mjs.map → useDragAndDrop-DJ6jqvZN.mjs.map} +1 -1
  95. package/dist/admin/index.js +2 -1
  96. package/dist/admin/index.js.map +1 -1
  97. package/dist/admin/index.mjs +5 -4
  98. package/dist/admin/src/content-manager.d.ts +3 -2
  99. package/dist/admin/src/exports.d.ts +1 -0
  100. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  101. package/dist/admin/src/pages/EditView/EditViewPage.d.ts +9 -1
  102. package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +1 -1
  103. package/dist/admin/src/pages/EditView/components/DocumentStatus.d.ts +3 -3
  104. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.d.ts +7 -0
  105. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/utils/prismLanguages.d.ts +49 -0
  106. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/constants.d.ts +1 -0
  107. package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.d.ts +4 -1
  108. package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.d.ts +4 -1
  109. package/dist/admin/src/preview/components/PreviewContent.d.ts +2 -0
  110. package/dist/admin/src/preview/components/PreviewHeader.d.ts +2 -0
  111. package/dist/admin/src/preview/components/PreviewSidePanel.d.ts +3 -0
  112. package/dist/admin/src/preview/index.d.ts +4 -0
  113. package/dist/admin/src/preview/pages/Preview.d.ts +11 -0
  114. package/dist/admin/src/preview/routes.d.ts +3 -0
  115. package/dist/admin/src/preview/services/preview.d.ts +3 -0
  116. package/dist/admin/src/router.d.ts +1 -1
  117. package/dist/admin/src/services/api.d.ts +1 -1
  118. package/dist/admin/src/services/components.d.ts +2 -2
  119. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  120. package/dist/admin/src/services/documents.d.ts +16 -19
  121. package/dist/admin/src/services/init.d.ts +1 -1
  122. package/dist/admin/src/services/relations.d.ts +2 -2
  123. package/dist/admin/src/services/uid.d.ts +3 -3
  124. package/dist/server/index.js +560 -317
  125. package/dist/server/index.js.map +1 -1
  126. package/dist/server/index.mjs +561 -317
  127. package/dist/server/index.mjs.map +1 -1
  128. package/dist/server/src/bootstrap.d.ts.map +1 -1
  129. package/dist/server/src/controllers/index.d.ts.map +1 -1
  130. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  131. package/dist/server/src/controllers/utils/metadata.d.ts +16 -1
  132. package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -1
  133. package/dist/server/src/history/controllers/history-version.d.ts +1 -1
  134. package/dist/server/src/history/controllers/history-version.d.ts.map +1 -1
  135. package/dist/server/src/history/services/history.d.ts +3 -3
  136. package/dist/server/src/history/services/history.d.ts.map +1 -1
  137. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  138. package/dist/server/src/history/services/utils.d.ts +6 -11
  139. package/dist/server/src/history/services/utils.d.ts.map +1 -1
  140. package/dist/server/src/index.d.ts +7 -6
  141. package/dist/server/src/index.d.ts.map +1 -1
  142. package/dist/server/src/preview/controllers/index.d.ts +2 -0
  143. package/dist/server/src/preview/controllers/index.d.ts.map +1 -0
  144. package/dist/server/src/preview/controllers/preview.d.ts +13 -0
  145. package/dist/server/src/preview/controllers/preview.d.ts.map +1 -0
  146. package/dist/server/src/preview/controllers/validation/preview.d.ts +6 -0
  147. package/dist/server/src/preview/controllers/validation/preview.d.ts.map +1 -0
  148. package/dist/server/src/preview/index.d.ts +4 -0
  149. package/dist/server/src/preview/index.d.ts.map +1 -0
  150. package/dist/server/src/preview/routes/index.d.ts +8 -0
  151. package/dist/server/src/preview/routes/index.d.ts.map +1 -0
  152. package/dist/server/src/preview/routes/preview.d.ts +4 -0
  153. package/dist/server/src/preview/routes/preview.d.ts.map +1 -0
  154. package/dist/server/src/preview/services/index.d.ts +16 -0
  155. package/dist/server/src/preview/services/index.d.ts.map +1 -0
  156. package/dist/server/src/preview/services/preview-config.d.ts +32 -0
  157. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -0
  158. package/dist/server/src/preview/services/preview.d.ts +12 -0
  159. package/dist/server/src/preview/services/preview.d.ts.map +1 -0
  160. package/dist/server/src/preview/utils.d.ts +19 -0
  161. package/dist/server/src/preview/utils.d.ts.map +1 -0
  162. package/dist/server/src/register.d.ts.map +1 -1
  163. package/dist/server/src/routes/index.d.ts.map +1 -1
  164. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  165. package/dist/server/src/services/document-metadata.d.ts +12 -10
  166. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  167. package/dist/server/src/services/index.d.ts +7 -6
  168. package/dist/server/src/services/index.d.ts.map +1 -1
  169. package/dist/server/src/services/utils/populate.d.ts +2 -2
  170. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  171. package/dist/server/src/utils/index.d.ts +2 -0
  172. package/dist/server/src/utils/index.d.ts.map +1 -1
  173. package/dist/shared/contracts/index.d.ts +1 -0
  174. package/dist/shared/contracts/index.d.ts.map +1 -1
  175. package/dist/shared/contracts/preview.d.ts +27 -0
  176. package/dist/shared/contracts/preview.d.ts.map +1 -0
  177. package/dist/shared/index.js +4 -0
  178. package/dist/shared/index.js.map +1 -1
  179. package/dist/shared/index.mjs +4 -0
  180. package/dist/shared/index.mjs.map +1 -1
  181. package/package.json +13 -11
  182. package/dist/_chunks/EditViewPage-BbY0bNNE.js.map +0 -1
  183. package/dist/_chunks/EditViewPage-Dx0QnTxn.mjs.map +0 -1
  184. package/dist/_chunks/Field-CglKum3X.js.map +0 -1
  185. package/dist/_chunks/Field-DVZSGAon.mjs.map +0 -1
  186. package/dist/_chunks/History-3JN4BIS1.js.map +0 -1
  187. package/dist/_chunks/History-Bmu6tx6s.mjs.map +0 -1
  188. package/dist/_chunks/ListConfigurationPage-BcC28SV0.js.map +0 -1
  189. package/dist/_chunks/ListConfigurationPage-DwijcJ17.mjs.map +0 -1
  190. package/dist/_chunks/ListViewPage-DzhuS3CW.mjs.map +0 -1
  191. package/dist/_chunks/ListViewPage-ZPNQ6jWC.js.map +0 -1
  192. package/dist/_chunks/Relations-B7VtRA3g.mjs.map +0 -1
  193. package/dist/_chunks/Relations-BHXq_cKF.js.map +0 -1
  194. package/dist/_chunks/index-DcA8_tJw.js.map +0 -1
  195. package/dist/_chunks/index-TaRzG09p.mjs.map +0 -1
  196. package/dist/_chunks/relations-D3Hlx6QX.mjs.map +0 -1
  197. package/dist/_chunks/relations-Z6RA1sBS.js.map +0 -1
@@ -4,18 +4,18 @@ const jsxRuntime = require("react/jsx-runtime");
4
4
  const strapiAdmin = require("@strapi/admin/strapi-admin");
5
5
  const React = require("react");
6
6
  const designSystem = require("@strapi/design-system");
7
+ const mapValues = require("lodash/fp/mapValues");
7
8
  const reactIntl = require("react-intl");
8
9
  const reactRouterDom = require("react-router-dom");
10
+ const styledComponents = require("styled-components");
9
11
  const yup = require("yup");
12
+ const qs = require("qs");
10
13
  const pipe = require("lodash/fp/pipe");
11
14
  const dateFns = require("date-fns");
12
- const styledComponents = require("styled-components");
13
- const qs = require("qs");
14
15
  const toolkit = require("@reduxjs/toolkit");
15
16
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
16
17
  function _interopNamespace(e) {
17
- if (e && e.__esModule)
18
- return e;
18
+ if (e && e.__esModule) return e;
19
19
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
20
20
  if (e) {
21
21
  for (const k in e) {
@@ -32,15 +32,23 @@ function _interopNamespace(e) {
32
32
  return Object.freeze(n);
33
33
  }
34
34
  const React__namespace = /* @__PURE__ */ _interopNamespace(React);
35
+ const mapValues__default = /* @__PURE__ */ _interopDefault(mapValues);
35
36
  const yup__namespace = /* @__PURE__ */ _interopNamespace(yup);
36
37
  const pipe__default = /* @__PURE__ */ _interopDefault(pipe);
37
- const __variableDynamicImportRuntimeHelper = (glob, path) => {
38
+ const __variableDynamicImportRuntimeHelper = (glob, path, segs) => {
38
39
  const v = glob[path];
39
40
  if (v) {
40
41
  return typeof v === "function" ? v() : Promise.resolve(v);
41
42
  }
42
43
  return new Promise((_, reject) => {
43
- (typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(reject.bind(null, new Error("Unknown variable dynamic import: " + path)));
44
+ (typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(
45
+ reject.bind(
46
+ null,
47
+ new Error(
48
+ "Unknown variable dynamic import: " + path + (path.split("/").length !== segs ? ". Note that variables only represent file names one level deep." : "")
49
+ )
50
+ )
51
+ );
44
52
  });
45
53
  };
46
54
  const PLUGIN_ID = "content-manager";
@@ -188,7 +196,8 @@ const contentManagerApi = strapiAdmin.adminApi.enhanceEndpoints({
188
196
  "InitialData",
189
197
  "HistoryVersion",
190
198
  "Relations",
191
- "UidAvailability"
199
+ "UidAvailability",
200
+ "RecentDocumentList"
192
201
  ]
193
202
  });
194
203
  const documentApi = contentManagerApi.injectEndpoints({
@@ -206,7 +215,7 @@ const documentApi = contentManagerApi.injectEndpoints({
206
215
  if (error) {
207
216
  return [];
208
217
  }
209
- return [{ type: "Document", id: `${model}_LIST` }];
218
+ return [{ type: "Document", id: `${model}_LIST` }, "RecentDocumentList"];
210
219
  }
211
220
  }),
212
221
  cloneDocument: builder.mutation({
@@ -220,7 +229,8 @@ const documentApi = contentManagerApi.injectEndpoints({
220
229
  }),
221
230
  invalidatesTags: (_result, _error, { model }) => [
222
231
  { type: "Document", id: `${model}_LIST` },
223
- { type: "UidAvailability", id: model }
232
+ { type: "UidAvailability", id: model },
233
+ "RecentDocumentList"
224
234
  ]
225
235
  }),
226
236
  /**
@@ -239,8 +249,21 @@ const documentApi = contentManagerApi.injectEndpoints({
239
249
  invalidatesTags: (result, _error, { model }) => [
240
250
  { type: "Document", id: `${model}_LIST` },
241
251
  "Relations",
242
- { type: "UidAvailability", id: model }
243
- ]
252
+ { type: "UidAvailability", id: model },
253
+ "RecentDocumentList"
254
+ ],
255
+ transformResponse: (response, meta, arg) => {
256
+ if (!("data" in response) && arg.model === "plugin::users-permissions.user") {
257
+ return {
258
+ data: response,
259
+ meta: {
260
+ availableStatus: [],
261
+ availableLocales: []
262
+ }
263
+ };
264
+ }
265
+ return response;
266
+ }
244
267
  }),
245
268
  deleteDocument: builder.mutation({
246
269
  query: ({ collectionType, model, documentId, params }) => ({
@@ -251,7 +274,8 @@ const documentApi = contentManagerApi.injectEndpoints({
251
274
  }
252
275
  }),
253
276
  invalidatesTags: (_result, _error, { collectionType, model }) => [
254
- { type: "Document", id: collectionType !== SINGLE_TYPES ? `${model}_LIST` : model }
277
+ { type: "Document", id: collectionType !== SINGLE_TYPES ? `${model}_LIST` : model },
278
+ "RecentDocumentList"
255
279
  ]
256
280
  }),
257
281
  deleteManyDocuments: builder.mutation({
@@ -263,7 +287,10 @@ const documentApi = contentManagerApi.injectEndpoints({
263
287
  params
264
288
  }
265
289
  }),
266
- invalidatesTags: (_res, _error, { model }) => [{ type: "Document", id: `${model}_LIST` }]
290
+ invalidatesTags: (_res, _error, { model }) => [
291
+ { type: "Document", id: `${model}_LIST` },
292
+ "RecentDocumentList"
293
+ ]
267
294
  }),
268
295
  discardDocument: builder.mutation({
269
296
  query: ({ collectionType, model, documentId, params }) => ({
@@ -281,7 +308,8 @@ const documentApi = contentManagerApi.injectEndpoints({
281
308
  },
282
309
  { type: "Document", id: `${model}_LIST` },
283
310
  "Relations",
284
- { type: "UidAvailability", id: model }
311
+ { type: "UidAvailability", id: model },
312
+ "RecentDocumentList"
285
313
  ];
286
314
  }
287
315
  }),
@@ -294,7 +322,7 @@ const documentApi = contentManagerApi.injectEndpoints({
294
322
  url: `/content-manager/collection-types/${model}`,
295
323
  method: "GET",
296
324
  config: {
297
- params
325
+ params: qs.stringify(params, { encode: true })
298
326
  }
299
327
  }),
300
328
  providesTags: (result, _error, arg) => {
@@ -376,7 +404,8 @@ const documentApi = contentManagerApi.injectEndpoints({
376
404
  id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model
377
405
  },
378
406
  { type: "Document", id: `${model}_LIST` },
379
- "Relations"
407
+ "Relations",
408
+ "RecentDocumentList"
380
409
  ];
381
410
  }
382
411
  }),
@@ -407,7 +436,9 @@ const documentApi = contentManagerApi.injectEndpoints({
407
436
  id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model
408
437
  },
409
438
  "Relations",
410
- { type: "UidAvailability", id: model }
439
+ { type: "UidAvailability", id: model },
440
+ "RecentDocumentList",
441
+ "RecentDocumentList"
411
442
  ];
412
443
  },
413
444
  async onQueryStarted({ data, ...patch }, { dispatch, queryFulfilled }) {
@@ -437,7 +468,8 @@ const documentApi = contentManagerApi.injectEndpoints({
437
468
  {
438
469
  type: "Document",
439
470
  id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model
440
- }
471
+ },
472
+ "RecentDocumentList"
441
473
  ];
442
474
  }
443
475
  }),
@@ -450,7 +482,10 @@ const documentApi = contentManagerApi.injectEndpoints({
450
482
  params
451
483
  }
452
484
  }),
453
- invalidatesTags: (_res, _error, { model, documentIds }) => documentIds.map((id) => ({ type: "Document", id: `${model}_${id}` }))
485
+ invalidatesTags: (_res, _error, { model, documentIds }) => [
486
+ ...documentIds.map((id) => ({ type: "Document", id: `${model}_${id}` })),
487
+ "RecentDocumentList"
488
+ ]
454
489
  })
455
490
  })
456
491
  });
@@ -473,8 +508,7 @@ const {
473
508
  useUnpublishManyDocumentsMutation
474
509
  } = documentApi;
475
510
  const buildValidParams = (query) => {
476
- if (!query)
477
- return query;
511
+ if (!query) return query;
478
512
  const { plugins: _, ...validQueryParams } = {
479
513
  ...query,
480
514
  ...Object.values(query?.plugins ?? {}).reduce(
@@ -482,9 +516,6 @@ const buildValidParams = (query) => {
482
516
  {}
483
517
  )
484
518
  };
485
- if ("_q" in validQueryParams) {
486
- validQueryParams._q = encodeURIComponent(validQueryParams._q);
487
- }
488
519
  return validQueryParams;
489
520
  };
490
521
  const isBaseQueryError = (error) => {
@@ -989,9 +1020,10 @@ const formatEditLayout = (data, {
989
1020
  currentPanelIndex += 2;
990
1021
  } else {
991
1022
  if (!panels[currentPanelIndex]) {
992
- panels.push([]);
1023
+ panels.push([row]);
1024
+ } else {
1025
+ panels[currentPanelIndex].push(row);
993
1026
  }
994
- panels[currentPanelIndex].push(row);
995
1027
  }
996
1028
  return panels;
997
1029
  }, []);
@@ -1249,9 +1281,6 @@ const useContentManagerContext = () => {
1249
1281
  };
1250
1282
  };
1251
1283
  const prefixPluginTranslations = (trad, pluginId) => {
1252
- if (!pluginId) {
1253
- throw new TypeError("pluginId can't be empty");
1254
- }
1255
1284
  return Object.keys(trad).reduce((acc, current) => {
1256
1285
  acc[`${pluginId}.${current}`] = trad[current];
1257
1286
  return acc;
@@ -1685,10 +1714,10 @@ const useDocumentActions = () => {
1685
1714
  update
1686
1715
  };
1687
1716
  };
1688
- const ProtectedHistoryPage = React.lazy(
1689
- () => Promise.resolve().then(() => require("./History-3JN4BIS1.js")).then((mod) => ({ default: mod.ProtectedHistoryPage }))
1717
+ const ProtectedHistoryPage = React__namespace.lazy(
1718
+ () => Promise.resolve().then(() => require("./History-wjcK4L0C.js")).then((mod) => ({ default: mod.ProtectedHistoryPage }))
1690
1719
  );
1691
- const routes$1 = [
1720
+ const routes$2 = [
1692
1721
  {
1693
1722
  path: ":collectionType/:slug/:id/history",
1694
1723
  Component: ProtectedHistoryPage
@@ -1698,32 +1727,45 @@ const routes$1 = [
1698
1727
  Component: ProtectedHistoryPage
1699
1728
  }
1700
1729
  ];
1730
+ const ProtectedPreviewPage = React__namespace.lazy(
1731
+ () => Promise.resolve().then(() => require("./Preview-DaOihysv.js")).then((mod) => ({ default: mod.ProtectedPreviewPage }))
1732
+ );
1733
+ const routes$1 = [
1734
+ {
1735
+ path: ":collectionType/:slug/:id/preview",
1736
+ Component: ProtectedPreviewPage
1737
+ },
1738
+ {
1739
+ path: ":collectionType/:slug/preview",
1740
+ Component: ProtectedPreviewPage
1741
+ }
1742
+ ];
1701
1743
  const ProtectedEditViewPage = React.lazy(
1702
- () => Promise.resolve().then(() => require("./EditViewPage-BbY0bNNE.js")).then((mod) => ({ default: mod.ProtectedEditViewPage }))
1744
+ () => Promise.resolve().then(() => require("./EditViewPage-B-kExt8C.js")).then((mod) => ({ default: mod.ProtectedEditViewPage }))
1703
1745
  );
1704
1746
  const ProtectedListViewPage = React.lazy(
1705
- () => Promise.resolve().then(() => require("./ListViewPage-ZPNQ6jWC.js")).then((mod) => ({ default: mod.ProtectedListViewPage }))
1747
+ () => Promise.resolve().then(() => require("./ListViewPage-D5NY9183.js")).then((mod) => ({ default: mod.ProtectedListViewPage }))
1706
1748
  );
1707
1749
  const ProtectedListConfiguration = React.lazy(
1708
- () => Promise.resolve().then(() => require("./ListConfigurationPage-BcC28SV0.js")).then((mod) => ({
1750
+ () => Promise.resolve().then(() => require("./ListConfigurationPage-CRbxIC3J.js")).then((mod) => ({
1709
1751
  default: mod.ProtectedListConfiguration
1710
1752
  }))
1711
1753
  );
1712
1754
  const ProtectedEditConfigurationPage = React.lazy(
1713
- () => Promise.resolve().then(() => require("./EditConfigurationPage-BrG0mEfF.js")).then((mod) => ({
1755
+ () => Promise.resolve().then(() => require("./EditConfigurationPage-RQkymxCy.js")).then((mod) => ({
1714
1756
  default: mod.ProtectedEditConfigurationPage
1715
1757
  }))
1716
1758
  );
1717
1759
  const ProtectedComponentConfigurationPage = React.lazy(
1718
- () => Promise.resolve().then(() => require("./ComponentConfigurationPage-DNRPa10q.js")).then((mod) => ({
1760
+ () => Promise.resolve().then(() => require("./ComponentConfigurationPage-BLWQy8ru.js")).then((mod) => ({
1719
1761
  default: mod.ProtectedComponentConfigurationPage
1720
1762
  }))
1721
1763
  );
1722
1764
  const NoPermissions = React.lazy(
1723
- () => Promise.resolve().then(() => require("./NoPermissionsPage-GaweP-NG.js")).then((mod) => ({ default: mod.NoPermissions }))
1765
+ () => Promise.resolve().then(() => require("./NoPermissionsPage-C5jwn70o.js")).then((mod) => ({ default: mod.NoPermissions }))
1724
1766
  );
1725
1767
  const NoContentType = React.lazy(
1726
- () => Promise.resolve().then(() => require("./NoContentTypePage-DzwJNXvn.js")).then((mod) => ({ default: mod.NoContentType }))
1768
+ () => Promise.resolve().then(() => require("./NoContentTypePage-BgQVE_Qb.js")).then((mod) => ({ default: mod.NoContentType }))
1727
1769
  );
1728
1770
  const CollectionTypePages = () => {
1729
1771
  const { collectionType } = reactRouterDom.useParams();
@@ -1735,7 +1777,7 @@ const CollectionTypePages = () => {
1735
1777
  const CLONE_RELATIVE_PATH = ":collectionType/:slug/clone/:origin";
1736
1778
  const CLONE_PATH = `/content-manager/${CLONE_RELATIVE_PATH}`;
1737
1779
  const LIST_RELATIVE_PATH = ":collectionType/:slug";
1738
- const LIST_PATH = `/content-manager/${LIST_RELATIVE_PATH}`;
1780
+ const LIST_PATH = `/content-manager/collection-types/:slug`;
1739
1781
  const routes = [
1740
1782
  {
1741
1783
  path: LIST_RELATIVE_PATH,
@@ -1769,6 +1811,7 @@ const routes = [
1769
1811
  path: "no-content-types",
1770
1812
  Component: NoContentType
1771
1813
  },
1814
+ ...routes$2,
1772
1815
  ...routes$1
1773
1816
  ];
1774
1817
  const DocumentActions = ({ actions: actions2 }) => {
@@ -1867,6 +1910,11 @@ const DocumentActionButton = (action) => {
1867
1910
  ) : null
1868
1911
  ] });
1869
1912
  };
1913
+ const MenuItem = styledComponents.styled(designSystem.Menu.Item)`
1914
+ &:hover {
1915
+ background: ${({ theme, isVariantDanger, isDisabled }) => isVariantDanger && !isDisabled ? theme.colors.danger100 : "neutral"};
1916
+ }
1917
+ `;
1870
1918
  const DocumentActionsMenu = ({
1871
1919
  actions: actions2,
1872
1920
  children,
@@ -1925,48 +1973,32 @@ const DocumentActionsMenu = ({
1925
1973
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Menu.Content, { maxHeight: void 0, popoverPlacement: "bottom-end", children: [
1926
1974
  actions2.map((action) => {
1927
1975
  return /* @__PURE__ */ jsxRuntime.jsx(
1928
- designSystem.Menu.Item,
1976
+ MenuItem,
1929
1977
  {
1930
1978
  disabled: action.disabled,
1931
1979
  onSelect: handleClick(action),
1932
1980
  display: "block",
1933
- children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { justifyContent: "space-between", gap: 4, children: [
1934
- /* @__PURE__ */ jsxRuntime.jsxs(
1935
- designSystem.Flex,
1936
- {
1937
- color: !action.disabled ? convertActionVariantToColor(action.variant) : "inherit",
1938
- gap: 2,
1939
- tag: "span",
1940
- children: [
1941
- /* @__PURE__ */ jsxRuntime.jsx(
1942
- designSystem.Flex,
1943
- {
1944
- tag: "span",
1945
- color: !action.disabled ? convertActionVariantToIconColor(action.variant) : "inherit",
1946
- children: action.icon
1947
- }
1948
- ),
1949
- action.label
1950
- ]
1951
- }
1952
- ),
1953
- action.id.startsWith("HistoryAction") && /* @__PURE__ */ jsxRuntime.jsx(
1954
- designSystem.Flex,
1955
- {
1956
- alignItems: "center",
1957
- background: "alternative100",
1958
- borderStyle: "solid",
1959
- borderColor: "alternative200",
1960
- borderWidth: "1px",
1961
- height: 5,
1962
- paddingLeft: 2,
1963
- paddingRight: 2,
1964
- hasRadius: true,
1965
- color: "alternative600",
1966
- children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", fontWeight: "bold", lineHeight: 1, children: formatMessage({ id: "global.new", defaultMessage: "New" }) })
1967
- }
1968
- )
1969
- ] })
1981
+ isVariantDanger: action.variant === "danger",
1982
+ isDisabled: action.disabled,
1983
+ children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "space-between", gap: 4, children: /* @__PURE__ */ jsxRuntime.jsxs(
1984
+ designSystem.Flex,
1985
+ {
1986
+ color: !action.disabled ? convertActionVariantToColor(action.variant) : "inherit",
1987
+ gap: 2,
1988
+ tag: "span",
1989
+ children: [
1990
+ /* @__PURE__ */ jsxRuntime.jsx(
1991
+ designSystem.Flex,
1992
+ {
1993
+ tag: "span",
1994
+ color: !action.disabled ? convertActionVariantToIconColor(action.variant) : "inherit",
1995
+ children: action.icon
1996
+ }
1997
+ ),
1998
+ action.label
1999
+ ]
2000
+ }
2001
+ ) })
1970
2002
  },
1971
2003
  action.id
1972
2004
  );
@@ -2077,6 +2109,18 @@ const DocumentActionModal = ({
2077
2109
  typeof Footer === "function" ? /* @__PURE__ */ jsxRuntime.jsx(Footer, { onClose: handleClose }) : Footer
2078
2110
  ] }) });
2079
2111
  };
2112
+ const transformData = (data) => {
2113
+ if (Array.isArray(data)) {
2114
+ return data.map(transformData);
2115
+ }
2116
+ if (typeof data === "object" && data !== null) {
2117
+ if ("apiData" in data) {
2118
+ return data.apiData;
2119
+ }
2120
+ return mapValues__default.default(transformData)(data);
2121
+ }
2122
+ return data;
2123
+ };
2080
2124
  const PublishAction$1 = ({
2081
2125
  activeTab,
2082
2126
  documentId,
@@ -2091,6 +2135,7 @@ const PublishAction$1 = ({
2091
2135
  const { _unstableFormatValidationErrors: formatValidationErrors } = strapiAdmin.useAPIErrorHandler();
2092
2136
  const isListView = reactRouterDom.useMatch(LIST_PATH) !== null;
2093
2137
  const isCloning = reactRouterDom.useMatch(CLONE_PATH) !== null;
2138
+ const { id } = reactRouterDom.useParams();
2094
2139
  const { formatMessage } = reactIntl.useIntl();
2095
2140
  const canPublish = useDocumentRBAC("PublishAction", ({ canPublish: canPublish2 }) => canPublish2);
2096
2141
  const { publish } = useDocumentActions();
@@ -2190,13 +2235,15 @@ const PublishAction$1 = ({
2190
2235
  documentId,
2191
2236
  params
2192
2237
  },
2193
- formDocumentToData(formValues)
2238
+ transformData(formValues)
2194
2239
  );
2195
2240
  if ("data" in res && collectionType !== SINGLE_TYPES) {
2196
- navigate({
2197
- pathname: `../${collectionType}/${model}/${res.data.documentId}`,
2198
- search: rawQuery
2199
- });
2241
+ if (id === "create") {
2242
+ navigate({
2243
+ pathname: `../${collectionType}/${model}/${res.data.documentId}`,
2244
+ search: rawQuery
2245
+ });
2246
+ }
2200
2247
  } else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
2201
2248
  setErrors(formatValidationErrors(res.error));
2202
2249
  }
@@ -2249,36 +2296,7 @@ const PublishAction$1 = ({
2249
2296
  };
2250
2297
  };
2251
2298
  PublishAction$1.type = "publish";
2252
- const formDocumentToData = (document) => {
2253
- return Object.keys(document).reduce((acc, key) => {
2254
- if (document[key] !== void 0) {
2255
- acc[key] = document[key];
2256
- }
2257
- if (typeof document[key] === "object" && document[key] !== null) {
2258
- if ("connect" in document[key] && document[key].connect !== null) {
2259
- acc[key] = {
2260
- ...acc[key],
2261
- connect: document[key].connect.map((item) => {
2262
- return {
2263
- documentId: item.documentId
2264
- };
2265
- })
2266
- };
2267
- }
2268
- if ("disconnect" in document[key] && document[key].disconnect !== null) {
2269
- acc[key] = {
2270
- ...acc[key],
2271
- disconnect: document[key].disconnect.map((item) => {
2272
- return {
2273
- documentId: item.documentId
2274
- };
2275
- })
2276
- };
2277
- }
2278
- }
2279
- return acc;
2280
- }, {});
2281
- };
2299
+ PublishAction$1.position = "panel";
2282
2300
  const UpdateAction = ({
2283
2301
  activeTab,
2284
2302
  documentId,
@@ -2301,96 +2319,134 @@ const UpdateAction = ({
2301
2319
  const validate = strapiAdmin.useForm("UpdateAction", (state) => state.validate);
2302
2320
  const setErrors = strapiAdmin.useForm("UpdateAction", (state) => state.setErrors);
2303
2321
  const resetForm = strapiAdmin.useForm("PublishAction", ({ resetForm: resetForm2 }) => resetForm2);
2304
- return {
2305
- /**
2306
- * Disabled when:
2307
- * - the form is submitting
2308
- * - the document is not modified & we're not cloning (you can save a clone entity straight away)
2309
- * - the active tab is the published tab
2310
- */
2311
- disabled: isSubmitting || !modified && !isCloning || activeTab === "published",
2312
- label: formatMessage({
2313
- id: "content-manager.containers.Edit.save",
2314
- defaultMessage: "Save"
2315
- }),
2316
- onClick: async () => {
2317
- setSubmitting(true);
2318
- try {
2319
- const { errors } = await validate(true, {
2320
- status: "draft"
2322
+ const handleUpdate = React__namespace.useCallback(async () => {
2323
+ setSubmitting(true);
2324
+ try {
2325
+ if (!modified) {
2326
+ return;
2327
+ }
2328
+ const { errors } = await validate(true, {
2329
+ status: "draft"
2330
+ });
2331
+ if (errors) {
2332
+ toggleNotification({
2333
+ type: "danger",
2334
+ message: formatMessage({
2335
+ id: "content-manager.validation.error",
2336
+ defaultMessage: "There are validation errors in your document. Please fix them before saving."
2337
+ })
2321
2338
  });
2322
- if (errors) {
2323
- toggleNotification({
2324
- type: "danger",
2325
- message: formatMessage({
2326
- id: "content-manager.validation.error",
2327
- defaultMessage: "There are validation errors in your document. Please fix them before saving."
2328
- })
2329
- });
2330
- return;
2331
- }
2332
- if (isCloning) {
2333
- const res = await clone(
2334
- {
2335
- model,
2336
- documentId: cloneMatch.params.origin,
2337
- params
2338
- },
2339
- formDocumentToData(document)
2340
- );
2341
- if ("data" in res) {
2342
- navigate(
2343
- {
2344
- pathname: `../${res.data.documentId}`,
2345
- search: rawQuery
2346
- },
2347
- { relative: "path" }
2348
- );
2349
- } else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
2350
- setErrors(formatValidationErrors(res.error));
2351
- }
2352
- } else if (documentId || collectionType === SINGLE_TYPES) {
2353
- const res = await update(
2339
+ return;
2340
+ }
2341
+ if (isCloning) {
2342
+ const res = await clone(
2343
+ {
2344
+ model,
2345
+ documentId: cloneMatch.params.origin,
2346
+ params
2347
+ },
2348
+ transformData(document)
2349
+ );
2350
+ if ("data" in res) {
2351
+ navigate(
2354
2352
  {
2355
- collectionType,
2356
- model,
2357
- documentId,
2358
- params
2353
+ pathname: `../${res.data.documentId}`,
2354
+ search: rawQuery
2359
2355
  },
2360
- formDocumentToData(document)
2356
+ { relative: "path" }
2361
2357
  );
2362
- if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
2363
- setErrors(formatValidationErrors(res.error));
2364
- } else {
2365
- resetForm();
2366
- }
2358
+ } else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
2359
+ setErrors(formatValidationErrors(res.error));
2360
+ }
2361
+ } else if (documentId || collectionType === SINGLE_TYPES) {
2362
+ const res = await update(
2363
+ {
2364
+ collectionType,
2365
+ model,
2366
+ documentId,
2367
+ params
2368
+ },
2369
+ transformData(document)
2370
+ );
2371
+ if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
2372
+ setErrors(formatValidationErrors(res.error));
2367
2373
  } else {
2368
- const res = await create(
2374
+ resetForm();
2375
+ }
2376
+ } else {
2377
+ const res = await create(
2378
+ {
2379
+ model,
2380
+ params
2381
+ },
2382
+ transformData(document)
2383
+ );
2384
+ if ("data" in res && collectionType !== SINGLE_TYPES) {
2385
+ navigate(
2369
2386
  {
2370
- model,
2371
- params
2387
+ pathname: `../${res.data.documentId}`,
2388
+ search: rawQuery
2372
2389
  },
2373
- formDocumentToData(document)
2390
+ { replace: true, relative: "path" }
2374
2391
  );
2375
- if ("data" in res && collectionType !== SINGLE_TYPES) {
2376
- navigate(
2377
- {
2378
- pathname: `../${res.data.documentId}`,
2379
- search: rawQuery
2380
- },
2381
- { replace: true, relative: "path" }
2382
- );
2383
- } else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
2384
- setErrors(formatValidationErrors(res.error));
2385
- }
2392
+ } else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
2393
+ setErrors(formatValidationErrors(res.error));
2386
2394
  }
2387
- } finally {
2388
- setSubmitting(false);
2389
2395
  }
2396
+ } finally {
2397
+ setSubmitting(false);
2390
2398
  }
2399
+ }, [
2400
+ clone,
2401
+ cloneMatch?.params.origin,
2402
+ collectionType,
2403
+ create,
2404
+ document,
2405
+ documentId,
2406
+ formatMessage,
2407
+ formatValidationErrors,
2408
+ isCloning,
2409
+ model,
2410
+ modified,
2411
+ navigate,
2412
+ params,
2413
+ rawQuery,
2414
+ resetForm,
2415
+ setErrors,
2416
+ setSubmitting,
2417
+ toggleNotification,
2418
+ update,
2419
+ validate
2420
+ ]);
2421
+ React__namespace.useEffect(() => {
2422
+ const handleKeyDown = (e) => {
2423
+ if (e.key === "Enter" && (e.metaKey || e.ctrlKey)) {
2424
+ e.preventDefault();
2425
+ handleUpdate();
2426
+ }
2427
+ };
2428
+ window.addEventListener("keydown", handleKeyDown);
2429
+ return () => {
2430
+ window.removeEventListener("keydown", handleKeyDown);
2431
+ };
2432
+ }, [handleUpdate]);
2433
+ return {
2434
+ /**
2435
+ * Disabled when:
2436
+ * - the form is submitting
2437
+ * - the document is not modified & we're not cloning (you can save a clone entity straight away)
2438
+ * - the active tab is the published tab
2439
+ */
2440
+ disabled: isSubmitting || !modified && !isCloning || activeTab === "published",
2441
+ label: formatMessage({
2442
+ id: "global.save",
2443
+ defaultMessage: "Save"
2444
+ }),
2445
+ onClick: handleUpdate
2391
2446
  };
2392
2447
  };
2393
2448
  UpdateAction.type = "update";
2449
+ UpdateAction.position = "panel";
2394
2450
  const UNPUBLISH_DRAFT_OPTIONS = {
2395
2451
  KEEP: "keep",
2396
2452
  DISCARD: "discard"
@@ -2513,6 +2569,7 @@ const UnpublishAction$1 = ({
2513
2569
  };
2514
2570
  };
2515
2571
  UnpublishAction$1.type = "unpublish";
2572
+ UnpublishAction$1.position = "panel";
2516
2573
  const DiscardAction = ({
2517
2574
  activeTab,
2518
2575
  documentId,
@@ -2563,6 +2620,7 @@ const DiscardAction = ({
2563
2620
  };
2564
2621
  };
2565
2622
  DiscardAction.type = "discard";
2623
+ DiscardAction.position = "panel";
2566
2624
  const DEFAULT_ACTIONS = [PublishAction$1, UpdateAction, UnpublishAction$1, DiscardAction];
2567
2625
  const intervals = ["years", "months", "days", "hours", "minutes", "seconds"];
2568
2626
  const RelativeTime = React__namespace.forwardRef(
@@ -2575,7 +2633,7 @@ const RelativeTime = React__namespace.forwardRef(
2575
2633
  });
2576
2634
  const unit = intervals.find((intervalUnit) => {
2577
2635
  return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);
2578
- });
2636
+ }) ?? "seconds";
2579
2637
  const relativeTime = dateFns.isPast(timestamp) ? -interval[unit] : interval[unit];
2580
2638
  const customInterval = customIntervals.find(
2581
2639
  (custom) => interval[custom.unit] < custom.threshold
@@ -2609,19 +2667,29 @@ const getDisplayName = ({
2609
2667
  return email ?? "";
2610
2668
  };
2611
2669
  const capitalise = (str) => str.charAt(0).toUpperCase() + str.slice(1);
2612
- const DocumentStatus = ({ status = "draft", ...restProps }) => {
2670
+ const DocumentStatus = ({ status = "draft", size = "S", ...restProps }) => {
2613
2671
  const statusVariant = status === "draft" ? "secondary" : status === "published" ? "success" : "alternative";
2614
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Status, { ...restProps, showBullet: false, size: "S", variant: statusVariant, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { tag: "span", variant: "omega", fontWeight: "bold", children: capitalise(status) }) });
2672
+ const { formatMessage } = reactIntl.useIntl();
2673
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Status, { ...restProps, size, variant: statusVariant, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { tag: "span", variant: "omega", fontWeight: "bold", children: formatMessage({
2674
+ id: `content-manager.containers.List.${status}`,
2675
+ defaultMessage: capitalise(status)
2676
+ }) }) });
2615
2677
  };
2616
2678
  const Header = ({ isCreating, status, title: documentTitle = "Untitled" }) => {
2617
2679
  const { formatMessage } = reactIntl.useIntl();
2618
2680
  const isCloning = reactRouterDom.useMatch(CLONE_PATH) !== null;
2681
+ const params = reactRouterDom.useParams();
2619
2682
  const title = isCreating ? formatMessage({
2620
2683
  id: "content-manager.containers.edit.title.new",
2621
2684
  defaultMessage: "Create an entry"
2622
2685
  }) : documentTitle;
2623
2686
  return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "flex-start", paddingTop: 6, paddingBottom: 4, gap: 2, children: [
2624
- /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.BackButton, {}),
2687
+ /* @__PURE__ */ jsxRuntime.jsx(
2688
+ strapiAdmin.BackButton,
2689
+ {
2690
+ fallback: params.collectionType === SINGLE_TYPES ? void 0 : `../${COLLECTION_TYPES}/${params.slug}`
2691
+ }
2692
+ ),
2625
2693
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { width: "100%", justifyContent: "space-between", gap: "80px", alignItems: "flex-start", children: [
2626
2694
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "alpha", tag: "h1", children: title }),
2627
2695
  /* @__PURE__ */ jsxRuntime.jsx(HeaderToolbar, {})
@@ -2672,7 +2740,7 @@ const HeaderToolbar = () => {
2672
2740
  meta: isCloning ? void 0 : meta,
2673
2741
  collectionType
2674
2742
  },
2675
- descriptions: plugins["content-manager"].apis.getDocumentActions(),
2743
+ descriptions: plugins["content-manager"].apis.getDocumentActions("header"),
2676
2744
  children: (actions2) => {
2677
2745
  const headerActions = actions2.filter((action) => {
2678
2746
  const positions = Array.isArray(action.position) ? action.position : [action.position];
@@ -2880,6 +2948,7 @@ const ConfigureTheViewAction = ({ collectionType, model }) => {
2880
2948
  };
2881
2949
  };
2882
2950
  ConfigureTheViewAction.type = "configure-the-view";
2951
+ ConfigureTheViewAction.position = "header";
2883
2952
  const EditTheModelAction = ({ model }) => {
2884
2953
  const navigate = reactRouterDom.useNavigate();
2885
2954
  const { formatMessage } = reactIntl.useIntl();
@@ -2896,6 +2965,7 @@ const EditTheModelAction = ({ model }) => {
2896
2965
  };
2897
2966
  };
2898
2967
  EditTheModelAction.type = "edit-the-model";
2968
+ EditTheModelAction.position = "header";
2899
2969
  const DeleteAction$1 = ({ documentId, model, collectionType, document }) => {
2900
2970
  const navigate = reactRouterDom.useNavigate();
2901
2971
  const { formatMessage } = reactIntl.useIntl();
@@ -2969,6 +3039,7 @@ const DeleteAction$1 = ({ documentId, model, collectionType, document }) => {
2969
3039
  };
2970
3040
  };
2971
3041
  DeleteAction$1.type = "delete";
3042
+ DeleteAction$1.position = ["header", "table-row"];
2972
3043
  const DEFAULT_HEADER_ACTIONS = [EditTheModelAction, ConfigureTheViewAction, DeleteAction$1];
2973
3044
  const Panels = () => {
2974
3045
  const isCloning = reactRouterDom.useMatch(CLONE_PATH) !== null;
@@ -3031,7 +3102,7 @@ const ActionsPanelContent = () => {
3031
3102
  strapiAdmin.DescriptionComponentRenderer,
3032
3103
  {
3033
3104
  props,
3034
- descriptions: plugins["content-manager"].apis.getDocumentActions(),
3105
+ descriptions: plugins["content-manager"].apis.getDocumentActions("panel"),
3035
3106
  children: (actions2) => /* @__PURE__ */ jsxRuntime.jsx(DocumentActions, { actions: actions2 })
3036
3107
  }
3037
3108
  ),
@@ -3058,7 +3129,7 @@ const Panel = React__namespace.forwardRef(({ children, title }, ref) => {
3058
3129
  justifyContent: "stretch",
3059
3130
  alignItems: "flex-start",
3060
3131
  children: [
3061
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { tag: "h2", variant: "sigma", textTransform: "uppercase", children: title }),
3132
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { tag: "h2", variant: "sigma", textTransform: "uppercase", textColor: "neutral600", children: title }),
3062
3133
  children
3063
3134
  ]
3064
3135
  }
@@ -3308,18 +3379,10 @@ const SelectedEntriesTableContent = ({
3308
3379
  search: row.locale && `?plugins[i18n][locale]=${row.locale}`
3309
3380
  },
3310
3381
  state: { from: pathname },
3311
- label: formatMessage(
3312
- { id: "app.component.HelperPluginTable.edit", defaultMessage: "Edit {target}" },
3313
- {
3314
- target: formatMessage(
3315
- {
3316
- id: "content-manager.components.ListViewHelperPluginTable.row-line",
3317
- defaultMessage: "item line {number}"
3318
- },
3319
- { number: index2 + 1 }
3320
- )
3321
- }
3322
- ),
3382
+ label: formatMessage({
3383
+ id: "content-manager.bulk-publish.edit",
3384
+ defaultMessage: "Edit"
3385
+ }),
3323
3386
  target: "_blank",
3324
3387
  marginLeft: "auto",
3325
3388
  variant: "ghost",
@@ -3493,8 +3556,7 @@ const PublishAction = ({ documents, model }) => {
3493
3556
  const refetchList = () => {
3494
3557
  contentManagerApi.util.invalidateTags([{ type: "Document", id: `${model}_LIST` }]);
3495
3558
  };
3496
- if (!showPublishButton)
3497
- return null;
3559
+ if (!showPublishButton) return null;
3498
3560
  return {
3499
3561
  actionType: "publish",
3500
3562
  variant: "tertiary",
@@ -3562,8 +3624,7 @@ const DeleteAction = ({ documents, model }) => {
3562
3624
  selectRow([]);
3563
3625
  }
3564
3626
  };
3565
- if (!hasDeletePermission)
3566
- return null;
3627
+ if (!hasDeletePermission) return null;
3567
3628
  return {
3568
3629
  variant: "danger-light",
3569
3630
  label: formatMessage({ id: "global.delete", defaultMessage: "Delete" }),
@@ -3612,8 +3673,7 @@ const UnpublishAction = ({ documents, model }) => {
3612
3673
  }
3613
3674
  };
3614
3675
  const showUnpublishButton = hasDraftAndPublishEnabled && hasPublishPermission && documents.some((entry) => entry.status === "published" || entry.status === "modified");
3615
- if (!showUnpublishButton)
3616
- return null;
3676
+ if (!showUnpublishButton) return null;
3617
3677
  return {
3618
3678
  variant: "tertiary",
3619
3679
  label: formatMessage({ id: "app.utils.unpublish", defaultMessage: "Unpublish" }),
@@ -3718,7 +3778,7 @@ const TableActions = ({ document }) => {
3718
3778
  strapiAdmin.DescriptionComponentRenderer,
3719
3779
  {
3720
3780
  props,
3721
- descriptions: plugins["content-manager"].apis.getDocumentActions().filter((action) => action.name !== "PublishAction"),
3781
+ descriptions: plugins["content-manager"].apis.getDocumentActions("table-row").filter((action) => action.name !== "PublishAction"),
3722
3782
  children: (actions2) => {
3723
3783
  const tableRowActions = actions2.filter((action) => {
3724
3784
  const positions = Array.isArray(action.position) ? action.position : [action.position];
@@ -3777,6 +3837,7 @@ const EditAction = ({ documentId }) => {
3777
3837
  };
3778
3838
  };
3779
3839
  EditAction.type = "edit";
3840
+ EditAction.position = "table-row";
3780
3841
  const StyledPencil = styledComponents.styled(Icons.Pencil)`
3781
3842
  path {
3782
3843
  fill: currentColor;
@@ -3853,6 +3914,7 @@ const CloneAction = ({ model, documentId }) => {
3853
3914
  };
3854
3915
  };
3855
3916
  CloneAction.type = "clone";
3917
+ CloneAction.position = "table-row";
3856
3918
  const StyledDuplicate = styledComponents.styled(Icons.Duplicate)`
3857
3919
  path {
3858
3920
  fill: currentColor;
@@ -3939,7 +4001,14 @@ class ContentManagerPlugin {
3939
4001
  addDocumentHeaderAction: this.addDocumentHeaderAction.bind(this),
3940
4002
  addEditViewSidePanel: this.addEditViewSidePanel.bind(this),
3941
4003
  getBulkActions: () => this.bulkActions,
3942
- getDocumentActions: () => this.documentActions,
4004
+ getDocumentActions: (position) => {
4005
+ if (position) {
4006
+ return this.documentActions.filter(
4007
+ (action) => action.position == void 0 || [action.position].flat().includes(position)
4008
+ );
4009
+ }
4010
+ return this.documentActions;
4011
+ },
3943
4012
  getEditViewSidePanels: () => this.editViewSidePanels,
3944
4013
  getHeaderActions: () => this.headerActions
3945
4014
  }
@@ -3949,10 +4018,8 @@ class ContentManagerPlugin {
3949
4018
  const getPrintableType = (value) => {
3950
4019
  const nativeType = typeof value;
3951
4020
  if (nativeType === "object") {
3952
- if (value === null)
3953
- return "null";
3954
- if (Array.isArray(value))
3955
- return "array";
4021
+ if (value === null) return "null";
4022
+ if (Array.isArray(value)) return "array";
3956
4023
  if (value instanceof Object && value.constructor.name !== "Object") {
3957
4024
  return value.constructor.name;
3958
4025
  }
@@ -3963,17 +4030,27 @@ const HistoryAction = ({ model, document }) => {
3963
4030
  const { formatMessage } = reactIntl.useIntl();
3964
4031
  const [{ query }] = strapiAdmin.useQueryParams();
3965
4032
  const navigate = reactRouterDom.useNavigate();
4033
+ const { trackUsage } = strapiAdmin.useTracking();
4034
+ const { pathname } = reactRouterDom.useLocation();
3966
4035
  const pluginsQueryParams = qs.stringify({ plugins: query.plugins }, { encode: false });
3967
4036
  if (!window.strapi.features.isEnabled("cms-content-history")) {
3968
4037
  return null;
3969
4038
  }
4039
+ const handleOnClick = () => {
4040
+ const destination = { pathname: "history", search: pluginsQueryParams };
4041
+ trackUsage("willNavigate", {
4042
+ from: pathname,
4043
+ to: `${pathname}/${destination.pathname}`
4044
+ });
4045
+ navigate(destination);
4046
+ };
3970
4047
  return {
3971
4048
  icon: /* @__PURE__ */ jsxRuntime.jsx(Icons.ClockCounterClockwise, {}),
3972
4049
  label: formatMessage({
3973
4050
  id: "content-manager.history.document-action",
3974
4051
  defaultMessage: "Content History"
3975
4052
  }),
3976
- onClick: () => navigate({ pathname: "history", search: pluginsQueryParams }),
4053
+ onClick: handleOnClick,
3977
4054
  disabled: (
3978
4055
  /**
3979
4056
  * The user is creating a new document.
@@ -3995,6 +4072,7 @@ const HistoryAction = ({ model, document }) => {
3995
4072
  };
3996
4073
  };
3997
4074
  HistoryAction.type = "history";
4075
+ HistoryAction.position = "header";
3998
4076
  const historyAdmin = {
3999
4077
  bootstrap(app) {
4000
4078
  const { addDocumentAction } = app.getPlugin("content-manager").apis;
@@ -4041,6 +4119,88 @@ const { setInitialData } = actions;
4041
4119
  const reducer = toolkit.combineReducers({
4042
4120
  app: reducer$1
4043
4121
  });
4122
+ const previewApi = contentManagerApi.injectEndpoints({
4123
+ endpoints: (builder) => ({
4124
+ getPreviewUrl: builder.query({
4125
+ query({ query, params }) {
4126
+ return {
4127
+ url: `/content-manager/preview/url/${params.contentType}`,
4128
+ method: "GET",
4129
+ config: {
4130
+ params: query
4131
+ }
4132
+ };
4133
+ }
4134
+ })
4135
+ })
4136
+ });
4137
+ const { useGetPreviewUrlQuery } = previewApi;
4138
+ const ConditionalTooltip = ({ isShown, label, children }) => {
4139
+ if (isShown) {
4140
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tooltip, { label, children });
4141
+ }
4142
+ return children;
4143
+ };
4144
+ const PreviewSidePanel = ({ model, documentId, document }) => {
4145
+ const { formatMessage } = reactIntl.useIntl();
4146
+ const { trackUsage } = strapiAdmin.useTracking();
4147
+ const { pathname } = reactRouterDom.useLocation();
4148
+ const [{ query }] = strapiAdmin.useQueryParams();
4149
+ const isModified = strapiAdmin.useForm("PreviewSidePanel", (state) => state.modified);
4150
+ const { data, error } = useGetPreviewUrlQuery({
4151
+ params: {
4152
+ contentType: model
4153
+ },
4154
+ query: {
4155
+ documentId,
4156
+ locale: document?.locale,
4157
+ status: document?.status
4158
+ }
4159
+ });
4160
+ if (!data?.data?.url || error) {
4161
+ return null;
4162
+ }
4163
+ const trackNavigation = () => {
4164
+ const destinationPathname = pathname.replace(/\/$/, "") + "/preview";
4165
+ trackUsage("willNavigate", { from: pathname, to: destinationPathname });
4166
+ };
4167
+ return {
4168
+ title: formatMessage({ id: "content-manager.preview.panel.title", defaultMessage: "Preview" }),
4169
+ content: /* @__PURE__ */ jsxRuntime.jsx(
4170
+ ConditionalTooltip,
4171
+ {
4172
+ label: formatMessage({
4173
+ id: "content-manager.preview.panel.button-disabled-tooltip",
4174
+ defaultMessage: "Please save to open the preview"
4175
+ }),
4176
+ isShown: isModified,
4177
+ children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { cursor: "not-allowed", width: "100%", children: /* @__PURE__ */ jsxRuntime.jsx(
4178
+ designSystem.Button,
4179
+ {
4180
+ variant: "tertiary",
4181
+ tag: reactRouterDom.Link,
4182
+ to: { pathname: "preview", search: qs.stringify(query, { encode: false }) },
4183
+ onClick: trackNavigation,
4184
+ width: "100%",
4185
+ disabled: isModified,
4186
+ pointerEvents: isModified ? "none" : void 0,
4187
+ tabIndex: isModified ? -1 : void 0,
4188
+ children: formatMessage({
4189
+ id: "content-manager.preview.panel.button",
4190
+ defaultMessage: "Open preview"
4191
+ })
4192
+ }
4193
+ ) })
4194
+ }
4195
+ )
4196
+ };
4197
+ };
4198
+ const previewAdmin = {
4199
+ bootstrap(app) {
4200
+ const contentManagerPluginApis = app.getPlugin("content-manager").apis;
4201
+ contentManagerPluginApis.addEditViewSidePanel([PreviewSidePanel]);
4202
+ }
4203
+ };
4044
4204
  const index = {
4045
4205
  register(app) {
4046
4206
  const cm = new ContentManagerPlugin();
@@ -4060,7 +4220,7 @@ const index = {
4060
4220
  app.router.addRoute({
4061
4221
  path: "content-manager/*",
4062
4222
  lazy: async () => {
4063
- const { Layout } = await Promise.resolve().then(() => require("./layout-CrgXpOxT.js"));
4223
+ const { Layout } = await Promise.resolve().then(() => require("./layout-BW80JSCd.js"));
4064
4224
  return {
4065
4225
  Component: Layout
4066
4226
  };
@@ -4073,11 +4233,14 @@ const index = {
4073
4233
  if (typeof historyAdmin.bootstrap === "function") {
4074
4234
  historyAdmin.bootstrap(app);
4075
4235
  }
4236
+ if (typeof previewAdmin.bootstrap === "function") {
4237
+ previewAdmin.bootstrap(app);
4238
+ }
4076
4239
  },
4077
4240
  async registerTrads({ locales }) {
4078
4241
  const importedTrads = await Promise.all(
4079
4242
  locales.map((locale) => {
4080
- return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/ar.json": () => Promise.resolve().then(() => require("./ar-BUUWXIYu.js")), "./translations/ca.json": () => Promise.resolve().then(() => require("./ca-Cmk45QO6.js")), "./translations/cs.json": () => Promise.resolve().then(() => require("./cs-CkJy6B2v.js")), "./translations/de.json": () => Promise.resolve().then(() => require("./de-CCEmbAah.js")), "./translations/en.json": () => Promise.resolve().then(() => require("./en-Bm0D0IWz.js")), "./translations/es.json": () => Promise.resolve().then(() => require("./es-EUonQTon.js")), "./translations/eu.json": () => Promise.resolve().then(() => require("./eu-VDH-3ovk.js")), "./translations/fr.json": () => Promise.resolve().then(() => require("./fr-B7kGGg3E.js")), "./translations/gu.json": () => Promise.resolve().then(() => require("./gu-BRmF601H.js")), "./translations/hi.json": () => Promise.resolve().then(() => require("./hi-CCJBptSq.js")), "./translations/hu.json": () => Promise.resolve().then(() => require("./hu-sNV_yLYy.js")), "./translations/id.json": () => Promise.resolve().then(() => require("./id-B5Ser98A.js")), "./translations/it.json": () => Promise.resolve().then(() => require("./it-DkBIs7vD.js")), "./translations/ja.json": () => Promise.resolve().then(() => require("./ja-CcFe8diO.js")), "./translations/ko.json": () => Promise.resolve().then(() => require("./ko-woFZPmLk.js")), "./translations/ml.json": () => Promise.resolve().then(() => require("./ml-C2W8N8k1.js")), "./translations/ms.json": () => Promise.resolve().then(() => require("./ms-BuFotyP_.js")), "./translations/nl.json": () => Promise.resolve().then(() => require("./nl-bbEOHChV.js")), "./translations/pl.json": () => Promise.resolve().then(() => require("./pl-uzwG-hk7.js")), "./translations/pt-BR.json": () => Promise.resolve().then(() => require("./pt-BR-BiOz37D9.js")), "./translations/pt.json": () => Promise.resolve().then(() => require("./pt-CeXQuq50.js")), "./translations/ru.json": () => Promise.resolve().then(() => require("./ru-BT3ybNny.js")), "./translations/sa.json": () => Promise.resolve().then(() => require("./sa-CcvkYInH.js")), "./translations/sk.json": () => Promise.resolve().then(() => require("./sk-CvY09Xjv.js")), "./translations/sv.json": () => Promise.resolve().then(() => require("./sv-MYDuzgvT.js")), "./translations/th.json": () => Promise.resolve().then(() => require("./th-D9_GfAjc.js")), "./translations/tr.json": () => Promise.resolve().then(() => require("./tr-D9UH-O_R.js")), "./translations/uk.json": () => Promise.resolve().then(() => require("./uk-C8EiqJY7.js")), "./translations/vi.json": () => Promise.resolve().then(() => require("./vi-CJlYDheJ.js")), "./translations/zh-Hans.json": () => Promise.resolve().then(() => require("./zh-Hans-9kOncHGw.js")), "./translations/zh.json": () => Promise.resolve().then(() => require("./zh-CQQfszqR.js")) }), `./translations/${locale}.json`).then(({ default: data }) => {
4243
+ return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/ar.json": () => Promise.resolve().then(() => require("./ar-BUUWXIYu.js")), "./translations/ca.json": () => Promise.resolve().then(() => require("./ca-Cmk45QO6.js")), "./translations/cs.json": () => Promise.resolve().then(() => require("./cs-CkJy6B2v.js")), "./translations/de.json": () => Promise.resolve().then(() => require("./de-CCEmbAah.js")), "./translations/en.json": () => Promise.resolve().then(() => require("./en-BzQmavmK.js")), "./translations/es.json": () => Promise.resolve().then(() => require("./es-9K52xZIr.js")), "./translations/eu.json": () => Promise.resolve().then(() => require("./eu-VDH-3ovk.js")), "./translations/fr.json": () => Promise.resolve().then(() => require("./fr-B2Kyv8Z9.js")), "./translations/gu.json": () => Promise.resolve().then(() => require("./gu-BRmF601H.js")), "./translations/hi.json": () => Promise.resolve().then(() => require("./hi-CCJBptSq.js")), "./translations/hu.json": () => Promise.resolve().then(() => require("./hu-sNV_yLYy.js")), "./translations/id.json": () => Promise.resolve().then(() => require("./id-B5Ser98A.js")), "./translations/it.json": () => Promise.resolve().then(() => require("./it-DkBIs7vD.js")), "./translations/ja.json": () => Promise.resolve().then(() => require("./ja-7sfIbjxE.js")), "./translations/ko.json": () => Promise.resolve().then(() => require("./ko-woFZPmLk.js")), "./translations/ml.json": () => Promise.resolve().then(() => require("./ml-C2W8N8k1.js")), "./translations/ms.json": () => Promise.resolve().then(() => require("./ms-BuFotyP_.js")), "./translations/nl.json": () => Promise.resolve().then(() => require("./nl-bbEOHChV.js")), "./translations/pl.json": () => Promise.resolve().then(() => require("./pl-uzwG-hk7.js")), "./translations/pt-BR.json": () => Promise.resolve().then(() => require("./pt-BR-BiOz37D9.js")), "./translations/pt.json": () => Promise.resolve().then(() => require("./pt-CeXQuq50.js")), "./translations/ru.json": () => Promise.resolve().then(() => require("./ru-BT3ybNny.js")), "./translations/sa.json": () => Promise.resolve().then(() => require("./sa-CcvkYInH.js")), "./translations/sk.json": () => Promise.resolve().then(() => require("./sk-CvY09Xjv.js")), "./translations/sv.json": () => Promise.resolve().then(() => require("./sv-MYDuzgvT.js")), "./translations/th.json": () => Promise.resolve().then(() => require("./th-D9_GfAjc.js")), "./translations/tr.json": () => Promise.resolve().then(() => require("./tr-D9UH-O_R.js")), "./translations/uk.json": () => Promise.resolve().then(() => require("./uk-C8EiqJY7.js")), "./translations/vi.json": () => Promise.resolve().then(() => require("./vi-CJlYDheJ.js")), "./translations/zh-Hans.json": () => Promise.resolve().then(() => require("./zh-Hans-9kOncHGw.js")), "./translations/zh.json": () => Promise.resolve().then(() => require("./zh-CQQfszqR.js")) }), `./translations/${locale}.json`, 3).then(({ default: data }) => {
4081
4244
  return {
4082
4245
  data: prefixPluginTranslations(data, PLUGIN_ID),
4083
4246
  locale
@@ -4135,5 +4298,6 @@ exports.useGetAllContentTypeSettingsQuery = useGetAllContentTypeSettingsQuery;
4135
4298
  exports.useGetAllDocumentsQuery = useGetAllDocumentsQuery;
4136
4299
  exports.useGetContentTypeConfigurationQuery = useGetContentTypeConfigurationQuery;
4137
4300
  exports.useGetInitialDataQuery = useGetInitialDataQuery;
4301
+ exports.useGetPreviewUrlQuery = useGetPreviewUrlQuery;
4138
4302
  exports.useUpdateContentTypeConfigurationMutation = useUpdateContentTypeConfigurationMutation;
4139
- //# sourceMappingURL=index-DcA8_tJw.js.map
4303
+ //# sourceMappingURL=index-Ca7YWlAA.js.map