@strapi/content-manager 0.0.0-experimental.5788c38836be65c0321a2dcadbdf44f04b798e8a → 0.0.0-experimental.58c6b635911a7cb83cd165b4e5abd75b8ec30893

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 (149) hide show
  1. package/dist/_chunks/{ComponentConfigurationPage-D1YuKq8j.mjs → ComponentConfigurationPage-BpM_Hc7r.mjs} +4 -4
  2. package/dist/_chunks/{ComponentConfigurationPage-D1YuKq8j.mjs.map → ComponentConfigurationPage-BpM_Hc7r.mjs.map} +1 -1
  3. package/dist/_chunks/{ComponentConfigurationPage-B42mQr1K.js → ComponentConfigurationPage-CL9CAMaL.js} +4 -4
  4. package/dist/_chunks/{ComponentConfigurationPage-B42mQr1K.js.map → ComponentConfigurationPage-CL9CAMaL.js.map} +1 -1
  5. package/dist/_chunks/{EditConfigurationPage-NC89F29V.js → EditConfigurationPage-ILWo0h1e.js} +4 -4
  6. package/dist/_chunks/{EditConfigurationPage-NC89F29V.js.map → EditConfigurationPage-ILWo0h1e.js.map} +1 -1
  7. package/dist/_chunks/{EditConfigurationPage-C9yiwgI_.mjs → EditConfigurationPage-_prbqpTM.mjs} +4 -4
  8. package/dist/_chunks/{EditConfigurationPage-C9yiwgI_.mjs.map → EditConfigurationPage-_prbqpTM.mjs.map} +1 -1
  9. package/dist/_chunks/{EditViewPage-DYDpe5Wi.js → EditViewPage-BqZvBN4s.js} +3 -3
  10. package/dist/_chunks/EditViewPage-BqZvBN4s.js.map +1 -0
  11. package/dist/_chunks/{EditViewPage-k8UcfVwt.mjs → EditViewPage-DAtscabN.mjs} +3 -3
  12. package/dist/_chunks/EditViewPage-DAtscabN.mjs.map +1 -0
  13. package/dist/_chunks/{Field-Crhugun2.js → Field-CcoQiiz1.js} +13 -9
  14. package/dist/_chunks/{Field-Crhugun2.js.map → Field-CcoQiiz1.js.map} +1 -1
  15. package/dist/_chunks/{Field-BLL5lknV.mjs → Field-D-mgn1tH.mjs} +13 -9
  16. package/dist/_chunks/{Field-BLL5lknV.mjs.map → Field-D-mgn1tH.mjs.map} +1 -1
  17. package/dist/_chunks/{Form-UHu2eOuG.mjs → Form-BxyeWiXW.mjs} +3 -3
  18. package/dist/_chunks/Form-BxyeWiXW.mjs.map +1 -0
  19. package/dist/_chunks/{Form-DUU19g6M.js → Form-CmLbZDfi.js} +3 -3
  20. package/dist/_chunks/Form-CmLbZDfi.js.map +1 -0
  21. package/dist/_chunks/{History-CpxkZXS3.mjs → History-BOhLaq_g.mjs} +38 -41
  22. package/dist/_chunks/History-BOhLaq_g.mjs.map +1 -0
  23. package/dist/_chunks/{History-CyA8tvJZ.js → History-uECUbCZB.js} +37 -40
  24. package/dist/_chunks/History-uECUbCZB.js.map +1 -0
  25. package/dist/_chunks/{ListConfigurationPage-OUwV8QF1.mjs → ListConfigurationPage-D0vQez6F.mjs} +3 -3
  26. package/dist/_chunks/{ListConfigurationPage-OUwV8QF1.mjs.map → ListConfigurationPage-D0vQez6F.mjs.map} +1 -1
  27. package/dist/_chunks/{ListConfigurationPage-pJV7aG2V.js → ListConfigurationPage-D_bBSFNW.js} +3 -3
  28. package/dist/_chunks/{ListConfigurationPage-pJV7aG2V.js.map → ListConfigurationPage-D_bBSFNW.js.map} +1 -1
  29. package/dist/_chunks/{ListViewPage-BIT0M8VG.js → ListViewPage-BkZ83b1A.js} +15 -4
  30. package/dist/_chunks/ListViewPage-BkZ83b1A.js.map +1 -0
  31. package/dist/_chunks/{ListViewPage-BOnhCGkE.mjs → ListViewPage-ns-bmy5C.mjs} +15 -4
  32. package/dist/_chunks/{ListViewPage-BOnhCGkE.mjs.map → ListViewPage-ns-bmy5C.mjs.map} +1 -1
  33. package/dist/_chunks/{NoContentTypePage-CwjlHGTn.mjs → NoContentTypePage-BA5ZKMDR.mjs} +2 -2
  34. package/dist/_chunks/{NoContentTypePage-CwjlHGTn.mjs.map → NoContentTypePage-BA5ZKMDR.mjs.map} +1 -1
  35. package/dist/_chunks/{NoContentTypePage-uIBsBUmH.js → NoContentTypePage-C1439s4s.js} +2 -2
  36. package/dist/_chunks/{NoContentTypePage-uIBsBUmH.js.map → NoContentTypePage-C1439s4s.js.map} +1 -1
  37. package/dist/_chunks/{NoPermissionsPage-CcWbyT_z.mjs → NoPermissionsPage-B0GdMw1Q.mjs} +2 -2
  38. package/dist/_chunks/{NoPermissionsPage-CcWbyT_z.mjs.map → NoPermissionsPage-B0GdMw1Q.mjs.map} +1 -1
  39. package/dist/_chunks/{NoPermissionsPage-C8wkEaOF.js → NoPermissionsPage-CPGwsVfb.js} +2 -2
  40. package/dist/_chunks/{NoPermissionsPage-C8wkEaOF.js.map → NoPermissionsPage-CPGwsVfb.js.map} +1 -1
  41. package/dist/_chunks/{Relations-wIdWJnA9.mjs → Relations-BIGPMSW4.mjs} +44 -17
  42. package/dist/_chunks/Relations-BIGPMSW4.mjs.map +1 -0
  43. package/dist/_chunks/{Relations-CwRu_eZv.js → Relations-d-8Uef_-.js} +43 -16
  44. package/dist/_chunks/Relations-d-8Uef_-.js.map +1 -0
  45. package/dist/_chunks/{en-Bm0D0IWz.js → en-Bdpa50w3.js} +6 -2
  46. package/dist/_chunks/{en-Bm0D0IWz.js.map → en-Bdpa50w3.js.map} +1 -1
  47. package/dist/_chunks/{en-DKV44jRb.mjs → en-CZw4xdPY.mjs} +6 -2
  48. package/dist/_chunks/{en-DKV44jRb.mjs.map → en-CZw4xdPY.mjs.map} +1 -1
  49. package/dist/_chunks/{es-EUonQTon.js → es-9K52xZIr.js} +2 -2
  50. package/dist/_chunks/{ja-CcFe8diO.js.map → es-9K52xZIr.js.map} +1 -1
  51. package/dist/_chunks/{es-CeXiYflN.mjs → es-D34tqjMw.mjs} +2 -2
  52. package/dist/_chunks/{es-CeXiYflN.mjs.map → es-D34tqjMw.mjs.map} +1 -1
  53. package/dist/_chunks/{fr-CD9VFbPM.mjs → fr--pg5jUbt.mjs} +13 -3
  54. package/dist/_chunks/{fr-CD9VFbPM.mjs.map → fr--pg5jUbt.mjs.map} +1 -1
  55. package/dist/_chunks/{fr-B7kGGg3E.js → fr-B2Kyv8Z9.js} +13 -3
  56. package/dist/_chunks/{fr-B7kGGg3E.js.map → fr-B2Kyv8Z9.js.map} +1 -1
  57. package/dist/_chunks/{index-BQ8DxaCa.mjs → index-3_WeHXYp.mjs} +137 -34
  58. package/dist/_chunks/index-3_WeHXYp.mjs.map +1 -0
  59. package/dist/_chunks/{index-BO-T2BdP.js → index-BgaeYWIy.js} +136 -32
  60. package/dist/_chunks/index-BgaeYWIy.js.map +1 -0
  61. package/dist/_chunks/{ja-CcFe8diO.js → ja-7sfIbjxE.js} +2 -2
  62. package/dist/_chunks/{es-EUonQTon.js.map → ja-7sfIbjxE.js.map} +1 -1
  63. package/dist/_chunks/{ja-CtsUxOvk.mjs → ja-BHqhDq4V.mjs} +2 -2
  64. package/dist/_chunks/{ja-CtsUxOvk.mjs.map → ja-BHqhDq4V.mjs.map} +1 -1
  65. package/dist/_chunks/{layout-BTB1_M8g.js → layout-ByFyQRDH.js} +3 -3
  66. package/dist/_chunks/{layout-BTB1_M8g.js.map → layout-ByFyQRDH.js.map} +1 -1
  67. package/dist/_chunks/{layout-N63eyE5E.mjs → layout-CrTxOnCy.mjs} +3 -3
  68. package/dist/_chunks/{layout-N63eyE5E.mjs.map → layout-CrTxOnCy.mjs.map} +1 -1
  69. package/dist/_chunks/{objects-gigeqt7s.js → objects-BcXOv6_9.js} +2 -4
  70. package/dist/_chunks/{objects-gigeqt7s.js.map → objects-BcXOv6_9.js.map} +1 -1
  71. package/dist/_chunks/{objects-mKMAmfec.mjs → objects-D6yBsdmx.mjs} +2 -4
  72. package/dist/_chunks/{objects-mKMAmfec.mjs.map → objects-D6yBsdmx.mjs.map} +1 -1
  73. package/dist/_chunks/{relations-Bh9r0CVE.mjs → relations-BlpLgngh.mjs} +3 -7
  74. package/dist/_chunks/relations-BlpLgngh.mjs.map +1 -0
  75. package/dist/_chunks/{relations-C9AQuM2z.js → relations-C5RSW926.js} +3 -7
  76. package/dist/_chunks/relations-C5RSW926.js.map +1 -0
  77. package/dist/admin/index.js +1 -1
  78. package/dist/admin/index.mjs +1 -1
  79. package/dist/admin/src/preview/components/PreviewSidePanel.d.ts +3 -0
  80. package/dist/admin/src/preview/constants.d.ts +1 -0
  81. package/dist/admin/src/preview/index.d.ts +4 -0
  82. package/dist/admin/src/preview/services/preview.d.ts +3 -0
  83. package/dist/server/index.js +350 -145
  84. package/dist/server/index.js.map +1 -1
  85. package/dist/server/index.mjs +350 -145
  86. package/dist/server/index.mjs.map +1 -1
  87. package/dist/server/src/bootstrap.d.ts.map +1 -1
  88. package/dist/server/src/controllers/index.d.ts.map +1 -1
  89. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  90. package/dist/server/src/controllers/utils/metadata.d.ts +15 -1
  91. package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -1
  92. package/dist/server/src/history/services/history.d.ts.map +1 -1
  93. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  94. package/dist/server/src/history/services/utils.d.ts +2 -3
  95. package/dist/server/src/history/services/utils.d.ts.map +1 -1
  96. package/dist/server/src/index.d.ts +4 -4
  97. package/dist/server/src/preview/constants.d.ts +2 -0
  98. package/dist/server/src/preview/constants.d.ts.map +1 -0
  99. package/dist/server/src/preview/controllers/index.d.ts +2 -0
  100. package/dist/server/src/preview/controllers/index.d.ts.map +1 -0
  101. package/dist/server/src/preview/controllers/preview.d.ts +13 -0
  102. package/dist/server/src/preview/controllers/preview.d.ts.map +1 -0
  103. package/dist/server/src/preview/controllers/validation/preview.d.ts +6 -0
  104. package/dist/server/src/preview/controllers/validation/preview.d.ts.map +1 -0
  105. package/dist/server/src/preview/index.d.ts +4 -0
  106. package/dist/server/src/preview/index.d.ts.map +1 -0
  107. package/dist/server/src/preview/routes/index.d.ts +8 -0
  108. package/dist/server/src/preview/routes/index.d.ts.map +1 -0
  109. package/dist/server/src/preview/routes/preview.d.ts +4 -0
  110. package/dist/server/src/preview/routes/preview.d.ts.map +1 -0
  111. package/dist/server/src/preview/services/index.d.ts +15 -0
  112. package/dist/server/src/preview/services/index.d.ts.map +1 -0
  113. package/dist/server/src/preview/services/preview-config.d.ts +30 -0
  114. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -0
  115. package/dist/server/src/preview/services/preview.d.ts +12 -0
  116. package/dist/server/src/preview/services/preview.d.ts.map +1 -0
  117. package/dist/server/src/preview/utils.d.ts +18 -0
  118. package/dist/server/src/preview/utils.d.ts.map +1 -0
  119. package/dist/server/src/routes/index.d.ts.map +1 -1
  120. package/dist/server/src/services/document-metadata.d.ts +8 -8
  121. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  122. package/dist/server/src/services/index.d.ts +4 -4
  123. package/dist/server/src/services/index.d.ts.map +1 -1
  124. package/dist/server/src/services/utils/configuration/index.d.ts +2 -2
  125. package/dist/server/src/services/utils/configuration/layouts.d.ts +2 -2
  126. package/dist/server/src/utils/index.d.ts +2 -0
  127. package/dist/server/src/utils/index.d.ts.map +1 -1
  128. package/dist/shared/contracts/index.d.ts +1 -0
  129. package/dist/shared/contracts/index.d.ts.map +1 -1
  130. package/dist/shared/contracts/preview.d.ts +27 -0
  131. package/dist/shared/contracts/preview.d.ts.map +1 -0
  132. package/dist/shared/index.js +4 -0
  133. package/dist/shared/index.js.map +1 -1
  134. package/dist/shared/index.mjs +4 -0
  135. package/dist/shared/index.mjs.map +1 -1
  136. package/package.json +8 -8
  137. package/dist/_chunks/EditViewPage-DYDpe5Wi.js.map +0 -1
  138. package/dist/_chunks/EditViewPage-k8UcfVwt.mjs.map +0 -1
  139. package/dist/_chunks/Form-DUU19g6M.js.map +0 -1
  140. package/dist/_chunks/Form-UHu2eOuG.mjs.map +0 -1
  141. package/dist/_chunks/History-CpxkZXS3.mjs.map +0 -1
  142. package/dist/_chunks/History-CyA8tvJZ.js.map +0 -1
  143. package/dist/_chunks/ListViewPage-BIT0M8VG.js.map +0 -1
  144. package/dist/_chunks/Relations-CwRu_eZv.js.map +0 -1
  145. package/dist/_chunks/Relations-wIdWJnA9.mjs.map +0 -1
  146. package/dist/_chunks/index-BO-T2BdP.js.map +0 -1
  147. package/dist/_chunks/index-BQ8DxaCa.mjs.map +0 -1
  148. package/dist/_chunks/relations-Bh9r0CVE.mjs.map +0 -1
  149. package/dist/_chunks/relations-C9AQuM2z.js.map +0 -1
@@ -4,6 +4,7 @@ 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");
9
10
  const yup = require("yup");
@@ -32,6 +33,7 @@ function _interopNamespace(e) {
32
33
  return Object.freeze(n);
33
34
  }
34
35
  const React__namespace = /* @__PURE__ */ _interopNamespace(React);
36
+ const mapValues__default = /* @__PURE__ */ _interopDefault(mapValues);
35
37
  const yup__namespace = /* @__PURE__ */ _interopNamespace(yup);
36
38
  const pipe__default = /* @__PURE__ */ _interopDefault(pipe);
37
39
  const __variableDynamicImportRuntimeHelper = (glob, path) => {
@@ -121,6 +123,7 @@ const DocumentRBAC = ({ children, permissions }) => {
121
123
  if (!slug) {
122
124
  throw new Error("Cannot find the slug param in the URL");
123
125
  }
126
+ const [{ rawQuery }] = strapiAdmin.useQueryParams();
124
127
  const userPermissions = strapiAdmin.useAuth("DocumentRBAC", (state) => state.permissions);
125
128
  const contentTypePermissions = React__namespace.useMemo(() => {
126
129
  const contentTypePermissions2 = userPermissions.filter(
@@ -131,7 +134,14 @@ const DocumentRBAC = ({ children, permissions }) => {
131
134
  return { ...acc, [action]: [permission] };
132
135
  }, {});
133
136
  }, [slug, userPermissions]);
134
- const { isLoading, allowedActions } = strapiAdmin.useRBAC(contentTypePermissions, permissions ?? void 0);
137
+ const { isLoading, allowedActions } = strapiAdmin.useRBAC(
138
+ contentTypePermissions,
139
+ permissions ?? void 0,
140
+ // TODO: useRBAC context should be typed and built differently
141
+ // We are passing raw query as context to the hook so that it can
142
+ // rely on the locale provided from DocumentRBAC for its permission calculations.
143
+ rawQuery
144
+ );
135
145
  const canCreateFields = !isLoading && allowedActions.canCreate ? extractAndDedupeFields(contentTypePermissions.create) : [];
136
146
  const canReadFields = !isLoading && allowedActions.canRead ? extractAndDedupeFields(contentTypePermissions.read) : [];
137
147
  const canUpdateFields = !isLoading && allowedActions.canUpdate ? extractAndDedupeFields(contentTypePermissions.update) : [];
@@ -482,12 +492,15 @@ const buildValidParams = (query) => {
482
492
  const isBaseQueryError = (error) => {
483
493
  return error.name !== void 0;
484
494
  };
485
- const arrayValidator = (options) => ({
495
+ const arrayValidator = (attribute, options) => ({
486
496
  message: strapiAdmin.translatedErrors.required,
487
497
  test(value) {
488
498
  if (options.status === "draft") {
489
499
  return true;
490
500
  }
501
+ if (!attribute.required) {
502
+ return true;
503
+ }
491
504
  if (!value) {
492
505
  return false;
493
506
  }
@@ -521,7 +534,7 @@ const createYupSchema = (attributes = {}, components = {}, options = { status: n
521
534
  ...acc,
522
535
  [name]: transformSchema(
523
536
  yup__namespace.array().of(createModelSchema(attributes3).nullable(false))
524
- ).test(arrayValidator(options))
537
+ ).test(arrayValidator(attribute, options))
525
538
  };
526
539
  } else {
527
540
  return {
@@ -548,7 +561,7 @@ const createYupSchema = (attributes = {}, components = {}, options = { status: n
548
561
  }
549
562
  )
550
563
  )
551
- ).test(arrayValidator(options))
564
+ ).test(arrayValidator(attribute, options))
552
565
  };
553
566
  case "relation":
554
567
  return {
@@ -978,9 +991,10 @@ const formatEditLayout = (data, {
978
991
  currentPanelIndex += 2;
979
992
  } else {
980
993
  if (!panels[currentPanelIndex]) {
981
- panels.push([]);
994
+ panels.push([row]);
995
+ } else {
996
+ panels[currentPanelIndex].push(row);
982
997
  }
983
- panels[currentPanelIndex].push(row);
984
998
  }
985
999
  return panels;
986
1000
  }, []);
@@ -1184,16 +1198,18 @@ const useDoc = () => {
1184
1198
  if (!slug) {
1185
1199
  throw new Error("Could not find model in url params");
1186
1200
  }
1201
+ const document = useDocument(
1202
+ { documentId: origin || id, model: slug, collectionType, params },
1203
+ {
1204
+ skip: id === "create" || !origin && !id && collectionType !== SINGLE_TYPES
1205
+ }
1206
+ );
1207
+ const returnId = origin || id === "create" ? void 0 : id;
1187
1208
  return {
1188
1209
  collectionType,
1189
1210
  model: slug,
1190
- id: origin || id === "create" ? void 0 : id,
1191
- ...useDocument(
1192
- { documentId: origin || id, model: slug, collectionType, params },
1193
- {
1194
- skip: id === "create" || !origin && !id && collectionType !== SINGLE_TYPES
1195
- }
1196
- )
1211
+ id: returnId,
1212
+ ...document
1197
1213
  };
1198
1214
  };
1199
1215
  const useContentManagerContext = () => {
@@ -1236,9 +1252,6 @@ const useContentManagerContext = () => {
1236
1252
  };
1237
1253
  };
1238
1254
  const prefixPluginTranslations = (trad, pluginId) => {
1239
- if (!pluginId) {
1240
- throw new TypeError("pluginId can't be empty");
1241
- }
1242
1255
  return Object.keys(trad).reduce((acc, current) => {
1243
1256
  acc[`${pluginId}.${current}`] = trad[current];
1244
1257
  return acc;
@@ -1673,7 +1686,7 @@ const useDocumentActions = () => {
1673
1686
  };
1674
1687
  };
1675
1688
  const ProtectedHistoryPage = React.lazy(
1676
- () => Promise.resolve().then(() => require("./History-CyA8tvJZ.js")).then((mod) => ({ default: mod.ProtectedHistoryPage }))
1689
+ () => Promise.resolve().then(() => require("./History-uECUbCZB.js")).then((mod) => ({ default: mod.ProtectedHistoryPage }))
1677
1690
  );
1678
1691
  const routes$1 = [
1679
1692
  {
@@ -1686,31 +1699,31 @@ const routes$1 = [
1686
1699
  }
1687
1700
  ];
1688
1701
  const ProtectedEditViewPage = React.lazy(
1689
- () => Promise.resolve().then(() => require("./EditViewPage-DYDpe5Wi.js")).then((mod) => ({ default: mod.ProtectedEditViewPage }))
1702
+ () => Promise.resolve().then(() => require("./EditViewPage-BqZvBN4s.js")).then((mod) => ({ default: mod.ProtectedEditViewPage }))
1690
1703
  );
1691
1704
  const ProtectedListViewPage = React.lazy(
1692
- () => Promise.resolve().then(() => require("./ListViewPage-BIT0M8VG.js")).then((mod) => ({ default: mod.ProtectedListViewPage }))
1705
+ () => Promise.resolve().then(() => require("./ListViewPage-BkZ83b1A.js")).then((mod) => ({ default: mod.ProtectedListViewPage }))
1693
1706
  );
1694
1707
  const ProtectedListConfiguration = React.lazy(
1695
- () => Promise.resolve().then(() => require("./ListConfigurationPage-pJV7aG2V.js")).then((mod) => ({
1708
+ () => Promise.resolve().then(() => require("./ListConfigurationPage-D_bBSFNW.js")).then((mod) => ({
1696
1709
  default: mod.ProtectedListConfiguration
1697
1710
  }))
1698
1711
  );
1699
1712
  const ProtectedEditConfigurationPage = React.lazy(
1700
- () => Promise.resolve().then(() => require("./EditConfigurationPage-NC89F29V.js")).then((mod) => ({
1713
+ () => Promise.resolve().then(() => require("./EditConfigurationPage-ILWo0h1e.js")).then((mod) => ({
1701
1714
  default: mod.ProtectedEditConfigurationPage
1702
1715
  }))
1703
1716
  );
1704
1717
  const ProtectedComponentConfigurationPage = React.lazy(
1705
- () => Promise.resolve().then(() => require("./ComponentConfigurationPage-B42mQr1K.js")).then((mod) => ({
1718
+ () => Promise.resolve().then(() => require("./ComponentConfigurationPage-CL9CAMaL.js")).then((mod) => ({
1706
1719
  default: mod.ProtectedComponentConfigurationPage
1707
1720
  }))
1708
1721
  );
1709
1722
  const NoPermissions = React.lazy(
1710
- () => Promise.resolve().then(() => require("./NoPermissionsPage-C8wkEaOF.js")).then((mod) => ({ default: mod.NoPermissions }))
1723
+ () => Promise.resolve().then(() => require("./NoPermissionsPage-CPGwsVfb.js")).then((mod) => ({ default: mod.NoPermissions }))
1711
1724
  );
1712
1725
  const NoContentType = React.lazy(
1713
- () => Promise.resolve().then(() => require("./NoContentTypePage-uIBsBUmH.js")).then((mod) => ({ default: mod.NoContentType }))
1726
+ () => Promise.resolve().then(() => require("./NoContentTypePage-C1439s4s.js")).then((mod) => ({ default: mod.NoContentType }))
1714
1727
  );
1715
1728
  const CollectionTypePages = () => {
1716
1729
  const { collectionType } = reactRouterDom.useParams();
@@ -2064,6 +2077,18 @@ const DocumentActionModal = ({
2064
2077
  typeof Footer === "function" ? /* @__PURE__ */ jsxRuntime.jsx(Footer, { onClose: handleClose }) : Footer
2065
2078
  ] }) });
2066
2079
  };
2080
+ const transformData = (data) => {
2081
+ if (Array.isArray(data)) {
2082
+ return data.map(transformData);
2083
+ }
2084
+ if (typeof data === "object" && data !== null) {
2085
+ if ("apiData" in data) {
2086
+ return data.apiData;
2087
+ }
2088
+ return mapValues__default.default(transformData)(data);
2089
+ }
2090
+ return data;
2091
+ };
2067
2092
  const PublishAction$1 = ({
2068
2093
  activeTab,
2069
2094
  documentId,
@@ -2177,7 +2202,7 @@ const PublishAction$1 = ({
2177
2202
  documentId,
2178
2203
  params
2179
2204
  },
2180
- formValues
2205
+ transformData(formValues)
2181
2206
  );
2182
2207
  if ("data" in res && collectionType !== SINGLE_TYPES) {
2183
2208
  navigate({
@@ -2293,7 +2318,7 @@ const UpdateAction = ({
2293
2318
  documentId: cloneMatch.params.origin,
2294
2319
  params
2295
2320
  },
2296
- document
2321
+ transformData(document)
2297
2322
  );
2298
2323
  if ("data" in res) {
2299
2324
  navigate(
@@ -2314,7 +2339,7 @@ const UpdateAction = ({
2314
2339
  documentId,
2315
2340
  params
2316
2341
  },
2317
- document
2342
+ transformData(document)
2318
2343
  );
2319
2344
  if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
2320
2345
  setErrors(formatValidationErrors(res.error));
@@ -2327,7 +2352,7 @@ const UpdateAction = ({
2327
2352
  model,
2328
2353
  params
2329
2354
  },
2330
- document
2355
+ transformData(document)
2331
2356
  );
2332
2357
  if ("data" in res && collectionType !== SINGLE_TYPES) {
2333
2358
  navigate(
@@ -3015,7 +3040,7 @@ const Panel = React__namespace.forwardRef(({ children, title }, ref) => {
3015
3040
  justifyContent: "stretch",
3016
3041
  alignItems: "flex-start",
3017
3042
  children: [
3018
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { tag: "h2", variant: "sigma", textTransform: "uppercase", children: title }),
3043
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { tag: "h2", variant: "sigma", textTransform: "uppercase", textColor: "neutral600", children: title }),
3019
3044
  children
3020
3045
  ]
3021
3046
  }
@@ -3998,6 +4023,82 @@ const { setInitialData } = actions;
3998
4023
  const reducer = toolkit.combineReducers({
3999
4024
  app: reducer$1
4000
4025
  });
4026
+ const previewApi = contentManagerApi.injectEndpoints({
4027
+ endpoints: (builder) => ({
4028
+ getPreviewUrl: builder.query({
4029
+ query({ query, params }) {
4030
+ return {
4031
+ url: `/content-manager/preview/url/${params.contentType}`,
4032
+ method: "GET",
4033
+ config: {
4034
+ params: query
4035
+ }
4036
+ };
4037
+ }
4038
+ })
4039
+ })
4040
+ });
4041
+ const { useGetPreviewUrlQuery } = previewApi;
4042
+ const PreviewSidePanel = ({ model, documentId, document }) => {
4043
+ const { formatMessage } = reactIntl.useIntl();
4044
+ const { toggleNotification } = strapiAdmin.useNotification();
4045
+ const { copy } = strapiAdmin.useClipboard();
4046
+ const { data, error } = useGetPreviewUrlQuery({
4047
+ params: {
4048
+ contentType: model
4049
+ },
4050
+ query: {
4051
+ documentId,
4052
+ locale: document?.locale,
4053
+ status: document?.status
4054
+ }
4055
+ });
4056
+ if (!data?.data?.url || error) {
4057
+ return null;
4058
+ }
4059
+ const { url } = data.data;
4060
+ const handleCopyLink = () => {
4061
+ copy(url);
4062
+ toggleNotification({
4063
+ message: formatMessage({
4064
+ id: "content-manager.preview.copy.success",
4065
+ defaultMessage: "Copied preview link"
4066
+ }),
4067
+ type: "success"
4068
+ });
4069
+ };
4070
+ return {
4071
+ title: formatMessage({ id: "content-manager.preview.panel.title", defaultMessage: "Preview" }),
4072
+ content: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, width: "100%", children: [
4073
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "tertiary", tag: reactRouterDom.Link, to: url, target: "_blank", flex: "auto", children: formatMessage({
4074
+ id: "content-manager.preview.panel.button",
4075
+ defaultMessage: "Open preview"
4076
+ }) }),
4077
+ /* @__PURE__ */ jsxRuntime.jsx(
4078
+ designSystem.IconButton,
4079
+ {
4080
+ type: "button",
4081
+ label: formatMessage({
4082
+ id: "preview.copy.label",
4083
+ defaultMessage: "Copy preview link"
4084
+ }),
4085
+ onClick: handleCopyLink,
4086
+ children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Link, {})
4087
+ }
4088
+ )
4089
+ ] })
4090
+ };
4091
+ };
4092
+ const FEATURE_ID = "preview";
4093
+ const previewAdmin = {
4094
+ bootstrap(app) {
4095
+ if (!window.strapi.future.isEnabled(FEATURE_ID)) {
4096
+ return;
4097
+ }
4098
+ const contentManagerPluginApis = app.getPlugin("content-manager").apis;
4099
+ contentManagerPluginApis.addEditViewSidePanel([PreviewSidePanel]);
4100
+ }
4101
+ };
4001
4102
  const index = {
4002
4103
  register(app) {
4003
4104
  const cm = new ContentManagerPlugin();
@@ -4017,7 +4118,7 @@ const index = {
4017
4118
  app.router.addRoute({
4018
4119
  path: "content-manager/*",
4019
4120
  lazy: async () => {
4020
- const { Layout } = await Promise.resolve().then(() => require("./layout-BTB1_M8g.js"));
4121
+ const { Layout } = await Promise.resolve().then(() => require("./layout-ByFyQRDH.js"));
4021
4122
  return {
4022
4123
  Component: Layout
4023
4124
  };
@@ -4030,11 +4131,14 @@ const index = {
4030
4131
  if (typeof historyAdmin.bootstrap === "function") {
4031
4132
  historyAdmin.bootstrap(app);
4032
4133
  }
4134
+ if (typeof previewAdmin.bootstrap === "function") {
4135
+ previewAdmin.bootstrap(app);
4136
+ }
4033
4137
  },
4034
4138
  async registerTrads({ locales }) {
4035
4139
  const importedTrads = await Promise.all(
4036
4140
  locales.map((locale) => {
4037
- 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 }) => {
4141
+ 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-Bdpa50w3.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`).then(({ default: data }) => {
4038
4142
  return {
4039
4143
  data: prefixPluginTranslations(data, PLUGIN_ID),
4040
4144
  locale
@@ -4093,4 +4197,4 @@ exports.useGetAllDocumentsQuery = useGetAllDocumentsQuery;
4093
4197
  exports.useGetContentTypeConfigurationQuery = useGetContentTypeConfigurationQuery;
4094
4198
  exports.useGetInitialDataQuery = useGetInitialDataQuery;
4095
4199
  exports.useUpdateContentTypeConfigurationMutation = useUpdateContentTypeConfigurationMutation;
4096
- //# sourceMappingURL=index-BO-T2BdP.js.map
4200
+ //# sourceMappingURL=index-BgaeYWIy.js.map