@strapi/content-manager 0.0.0-experimental.bd712ad3930045f4a5d2144c119e0b7856e97fc4 → 0.0.0-experimental.cb311d9fcfbd8e441f790aea232f0a39bdd90e16

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 (91) hide show
  1. package/dist/_chunks/{ComponentConfigurationPage-C7ImeKGM.mjs → ComponentConfigurationPage-D0dyDTwq.mjs} +3 -3
  2. package/dist/_chunks/{ComponentConfigurationPage-C7ImeKGM.mjs.map → ComponentConfigurationPage-D0dyDTwq.mjs.map} +1 -1
  3. package/dist/_chunks/{ComponentConfigurationPage-BWQv6yRj.js → ComponentConfigurationPage-DL1MHO8i.js} +3 -3
  4. package/dist/_chunks/{ComponentConfigurationPage-BWQv6yRj.js.map → ComponentConfigurationPage-DL1MHO8i.js.map} +1 -1
  5. package/dist/_chunks/{EditConfigurationPage-MItFGzT9.mjs → EditConfigurationPage-13b7S5Cq.mjs} +3 -3
  6. package/dist/_chunks/{EditConfigurationPage-MItFGzT9.mjs.map → EditConfigurationPage-13b7S5Cq.mjs.map} +1 -1
  7. package/dist/_chunks/{EditConfigurationPage-CEGwxV-L.js → EditConfigurationPage-CMaOf-A-.js} +3 -3
  8. package/dist/_chunks/{EditConfigurationPage-CEGwxV-L.js.map → EditConfigurationPage-CMaOf-A-.js.map} +1 -1
  9. package/dist/_chunks/{EditViewPage-CmMi2Xsn.js → EditViewPage-BSVmMpRd.js} +3 -3
  10. package/dist/_chunks/{EditViewPage-CmMi2Xsn.js.map → EditViewPage-BSVmMpRd.js.map} +1 -1
  11. package/dist/_chunks/{EditViewPage-DhmAg0NK.mjs → EditViewPage-C3tIZ8F5.mjs} +3 -3
  12. package/dist/_chunks/{EditViewPage-DhmAg0NK.mjs.map → EditViewPage-C3tIZ8F5.mjs.map} +1 -1
  13. package/dist/_chunks/{Field-Cs62u5pl.mjs → Field-BvuT8cGL.mjs} +8 -8
  14. package/dist/_chunks/Field-BvuT8cGL.mjs.map +1 -0
  15. package/dist/_chunks/{Field-1DLtcLAI.js → Field-DUCVth4C.js} +8 -8
  16. package/dist/_chunks/Field-DUCVth4C.js.map +1 -0
  17. package/dist/_chunks/{Form-zYHtzGUX.mjs → Form-BZmDNVr9.mjs} +2 -2
  18. package/dist/_chunks/{Form-zYHtzGUX.mjs.map → Form-BZmDNVr9.mjs.map} +1 -1
  19. package/dist/_chunks/{Form-CqFA7F_V.js → Form-Cpl4W1ak.js} +2 -2
  20. package/dist/_chunks/{Form-CqFA7F_V.js.map → Form-Cpl4W1ak.js.map} +1 -1
  21. package/dist/_chunks/{History-DalgFQ3D.mjs → History-Cq_Hrzuu.mjs} +21 -11
  22. package/dist/_chunks/History-Cq_Hrzuu.mjs.map +1 -0
  23. package/dist/_chunks/{History-BblwXv7-.js → History-D4U2YISB.js} +21 -11
  24. package/dist/_chunks/History-D4U2YISB.js.map +1 -0
  25. package/dist/_chunks/{ListConfigurationPage-Cpy4QqNd.js → ListConfigurationPage-Bny6CdWe.js} +2 -2
  26. package/dist/_chunks/{ListConfigurationPage-Cpy4QqNd.js.map → ListConfigurationPage-Bny6CdWe.js.map} +1 -1
  27. package/dist/_chunks/{ListConfigurationPage-DWy-vRzs.mjs → ListConfigurationPage-W-KQHmBv.mjs} +2 -2
  28. package/dist/_chunks/{ListConfigurationPage-DWy-vRzs.mjs.map → ListConfigurationPage-W-KQHmBv.mjs.map} +1 -1
  29. package/dist/_chunks/{ListViewPage-BkAwIW9s.mjs → ListViewPage-HBBnJa8K.mjs} +10 -5
  30. package/dist/_chunks/ListViewPage-HBBnJa8K.mjs.map +1 -0
  31. package/dist/_chunks/{ListViewPage-DFjn1DNW.js → ListViewPage-O8F1pBJo.js} +9 -4
  32. package/dist/_chunks/ListViewPage-O8F1pBJo.js.map +1 -0
  33. package/dist/_chunks/{NoContentTypePage-B9BCNNdL.mjs → NoContentTypePage-B-gIhHWM.mjs} +2 -2
  34. package/dist/_chunks/{NoContentTypePage-B9BCNNdL.mjs.map → NoContentTypePage-B-gIhHWM.mjs.map} +1 -1
  35. package/dist/_chunks/{NoContentTypePage-C-3ykoxs.js → NoContentTypePage-CQWChGPw.js} +2 -2
  36. package/dist/_chunks/{NoContentTypePage-C-3ykoxs.js.map → NoContentTypePage-CQWChGPw.js.map} +1 -1
  37. package/dist/_chunks/{NoPermissionsPage-DKLmDZnZ.js → NoPermissionsPage-CY46zxnM.js} +2 -2
  38. package/dist/_chunks/{NoPermissionsPage-DKLmDZnZ.js.map → NoPermissionsPage-CY46zxnM.js.map} +1 -1
  39. package/dist/_chunks/{NoPermissionsPage-Bt_HWGat.mjs → NoPermissionsPage-XhOPl8wx.mjs} +2 -2
  40. package/dist/_chunks/{NoPermissionsPage-Bt_HWGat.mjs.map → NoPermissionsPage-XhOPl8wx.mjs.map} +1 -1
  41. package/dist/_chunks/{Relations-CrxfoH2n.js → Relations-C4gGfZRv.js} +3 -3
  42. package/dist/_chunks/Relations-C4gGfZRv.js.map +1 -0
  43. package/dist/_chunks/{Relations-CJmTbZ8T.mjs → Relations-vFZ6Wasg.mjs} +3 -3
  44. package/dist/_chunks/Relations-vFZ6Wasg.mjs.map +1 -0
  45. package/dist/_chunks/{en-Ux26r5pl.mjs → en-BrCTWlZv.mjs} +5 -4
  46. package/dist/_chunks/{en-Ux26r5pl.mjs.map → en-BrCTWlZv.mjs.map} +1 -1
  47. package/dist/_chunks/{en-fbKQxLGn.js → en-uOUIxfcQ.js} +5 -4
  48. package/dist/_chunks/{en-fbKQxLGn.js.map → en-uOUIxfcQ.js.map} +1 -1
  49. package/dist/_chunks/{index-Buwn78Rt.js → index-5EMXLEM_.js} +257 -139
  50. package/dist/_chunks/index-5EMXLEM_.js.map +1 -0
  51. package/dist/_chunks/{index-D1344xdw.mjs → index-Dpxg3ctD.mjs} +260 -142
  52. package/dist/_chunks/index-Dpxg3ctD.mjs.map +1 -0
  53. package/dist/_chunks/{layout-ChVuUpa1.mjs → layout-C0INpKap.mjs} +17 -5
  54. package/dist/_chunks/{layout-ChVuUpa1.mjs.map → layout-C0INpKap.mjs.map} +1 -1
  55. package/dist/_chunks/{layout-DRuJUpas.js → layout-P3eKO1Qy.js} +16 -4
  56. package/dist/_chunks/{layout-DRuJUpas.js.map → layout-P3eKO1Qy.js.map} +1 -1
  57. package/dist/_chunks/{relations-DuoUwyJr.js → relations-B1y0K6LE.js} +2 -2
  58. package/dist/_chunks/{relations-DuoUwyJr.js.map → relations-B1y0K6LE.js.map} +1 -1
  59. package/dist/_chunks/{relations-B-deMCy4.mjs → relations-FBRRBWeO.mjs} +2 -2
  60. package/dist/_chunks/{relations-B-deMCy4.mjs.map → relations-FBRRBWeO.mjs.map} +1 -1
  61. package/dist/admin/index.js +1 -1
  62. package/dist/admin/index.mjs +1 -1
  63. package/dist/admin/src/history/index.d.ts +3 -0
  64. package/dist/admin/src/index.d.ts +1 -0
  65. package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +1 -0
  66. package/dist/admin/src/pages/EditView/components/FormInputs/Relations.d.ts +20 -0
  67. package/dist/server/index.js +130 -85
  68. package/dist/server/index.js.map +1 -1
  69. package/dist/server/index.mjs +131 -86
  70. package/dist/server/index.mjs.map +1 -1
  71. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  72. package/dist/server/src/controllers/uid.d.ts.map +1 -1
  73. package/dist/server/src/controllers/validation/dimensions.d.ts +4 -2
  74. package/dist/server/src/controllers/validation/dimensions.d.ts.map +1 -1
  75. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  76. package/dist/server/src/history/services/utils.d.ts +1 -1
  77. package/dist/server/src/history/services/utils.d.ts.map +1 -1
  78. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  79. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  80. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  81. package/package.json +6 -6
  82. package/dist/_chunks/Field-1DLtcLAI.js.map +0 -1
  83. package/dist/_chunks/Field-Cs62u5pl.mjs.map +0 -1
  84. package/dist/_chunks/History-BblwXv7-.js.map +0 -1
  85. package/dist/_chunks/History-DalgFQ3D.mjs.map +0 -1
  86. package/dist/_chunks/ListViewPage-BkAwIW9s.mjs.map +0 -1
  87. package/dist/_chunks/ListViewPage-DFjn1DNW.js.map +0 -1
  88. package/dist/_chunks/Relations-CJmTbZ8T.mjs.map +0 -1
  89. package/dist/_chunks/Relations-CrxfoH2n.js.map +0 -1
  90. package/dist/_chunks/index-Buwn78Rt.js.map +0 -1
  91. package/dist/_chunks/index-D1344xdw.mjs.map +0 -1
@@ -2,15 +2,15 @@
2
2
  const Icons = require("@strapi/icons");
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
4
  const strapiAdmin = require("@strapi/admin/strapi-admin");
5
- const qs = require("qs");
6
- const reactIntl = require("react-intl");
7
- const reactRouterDom = require("react-router-dom");
8
5
  const React = require("react");
9
6
  const designSystem = require("@strapi/design-system");
7
+ const reactIntl = require("react-intl");
8
+ const reactRouterDom = require("react-router-dom");
10
9
  const styledComponents = require("styled-components");
11
10
  const yup = require("yup");
12
11
  const pipe = require("lodash/fp/pipe");
13
12
  const dateFns = require("date-fns");
13
+ const qs = require("qs");
14
14
  const toolkit = require("@reduxjs/toolkit");
15
15
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
16
16
  function _interopNamespace(e) {
@@ -70,42 +70,6 @@ const useInjectionZone = (area) => {
70
70
  const [page, position] = area.split(".");
71
71
  return contentManagerPlugin.getInjectedComponents(page, position);
72
72
  };
73
- const HistoryAction = ({ model, document }) => {
74
- const { formatMessage } = reactIntl.useIntl();
75
- const [{ query }] = strapiAdmin.useQueryParams();
76
- const navigate = reactRouterDom.useNavigate();
77
- const pluginsQueryParams = qs.stringify({ plugins: query.plugins }, { encode: false });
78
- if (!window.strapi.features.isEnabled("cms-content-history")) {
79
- return null;
80
- }
81
- return {
82
- icon: /* @__PURE__ */ jsxRuntime.jsx(Icons.ClockCounterClockwise, {}),
83
- label: formatMessage({
84
- id: "content-manager.history.document-action",
85
- defaultMessage: "Content History"
86
- }),
87
- onClick: () => navigate({ pathname: "history", search: pluginsQueryParams }),
88
- disabled: (
89
- /**
90
- * The user is creating a new document.
91
- * It hasn't been saved yet, so there's no history to go to
92
- */
93
- !document || /**
94
- * The document has been created but the current dimension has never been saved.
95
- * For example, the user is creating a new locale in an existing document,
96
- * so there's no history for the document in that locale
97
- */
98
- !document.id || /**
99
- * History is only available for content types created by the user.
100
- * These have the `api::` prefix, as opposed to the ones created by Strapi or plugins,
101
- * which start with `admin::` or `plugin::`
102
- */
103
- !model.startsWith("api::")
104
- ),
105
- position: "header"
106
- };
107
- };
108
- HistoryAction.type = "history";
109
73
  const ID = "id";
110
74
  const CREATED_BY_ATTRIBUTE_NAME = "createdBy";
111
75
  const UPDATED_BY_ATTRIBUTE_NAME = "updatedBy";
@@ -229,7 +193,12 @@ const documentApi = contentManagerApi.injectEndpoints({
229
193
  params: query
230
194
  }
231
195
  }),
232
- invalidatesTags: (_result, _error, { model }) => [{ type: "Document", id: `${model}_LIST` }]
196
+ invalidatesTags: (_result, error, { model }) => {
197
+ if (error) {
198
+ return [];
199
+ }
200
+ return [{ type: "Document", id: `${model}_LIST` }];
201
+ }
233
202
  }),
234
203
  cloneDocument: builder.mutation({
235
204
  query: ({ model, sourceId, data, params }) => ({
@@ -316,6 +285,7 @@ const documentApi = contentManagerApi.injectEndpoints({
316
285
  }),
317
286
  providesTags: (result, _error, arg) => {
318
287
  return [
288
+ { type: "Document", id: `ALL_LIST` },
319
289
  { type: "Document", id: `${arg.model}_LIST` },
320
290
  ...result?.results.map(({ documentId }) => ({
321
291
  type: "Document",
@@ -354,6 +324,11 @@ const documentApi = contentManagerApi.injectEndpoints({
354
324
  {
355
325
  type: "Document",
356
326
  id: collectionType !== SINGLE_TYPES ? `${model}_${result && "documentId" in result ? result.documentId : documentId}` : model
327
+ },
328
+ // Make it easy to invalidate all individual documents queries for a model
329
+ {
330
+ type: "Document",
331
+ id: `${model}_ALL_ITEMS`
357
332
  }
358
333
  ];
359
334
  }
@@ -419,6 +394,18 @@ const documentApi = contentManagerApi.injectEndpoints({
419
394
  },
420
395
  "Relations"
421
396
  ];
397
+ },
398
+ async onQueryStarted({ data, ...patch }, { dispatch, queryFulfilled }) {
399
+ const patchResult = dispatch(
400
+ documentApi.util.updateQueryData("getDocument", patch, (draft) => {
401
+ Object.assign(draft.data, data);
402
+ })
403
+ );
404
+ try {
405
+ await queryFulfilled;
406
+ } catch {
407
+ patchResult.undo();
408
+ }
422
409
  }
423
410
  }),
424
411
  unpublishDocument: builder.mutation({
@@ -602,6 +589,14 @@ const createAttributeSchema = (attribute) => {
602
589
  if (!value || typeof value === "string" && value.length === 0) {
603
590
  return true;
604
591
  }
592
+ if (typeof value === "object") {
593
+ try {
594
+ JSON.stringify(value);
595
+ return true;
596
+ } catch (err) {
597
+ return false;
598
+ }
599
+ }
605
600
  try {
606
601
  JSON.parse(value);
607
602
  return true;
@@ -1231,7 +1226,6 @@ const useDocumentActions = () => {
1231
1226
  sourceId
1232
1227
  });
1233
1228
  if ("error" in res) {
1234
- toggleNotification({ type: "danger", message: formatAPIError(res.error) });
1235
1229
  return { error: res.error };
1236
1230
  }
1237
1231
  toggleNotification({
@@ -1312,7 +1306,7 @@ const useDocumentActions = () => {
1312
1306
  };
1313
1307
  };
1314
1308
  const ProtectedHistoryPage = React.lazy(
1315
- () => Promise.resolve().then(() => require("./History-BblwXv7-.js")).then((mod) => ({ default: mod.ProtectedHistoryPage }))
1309
+ () => Promise.resolve().then(() => require("./History-D4U2YISB.js")).then((mod) => ({ default: mod.ProtectedHistoryPage }))
1316
1310
  );
1317
1311
  const routes$1 = [
1318
1312
  {
@@ -1325,31 +1319,31 @@ const routes$1 = [
1325
1319
  }
1326
1320
  ];
1327
1321
  const ProtectedEditViewPage = React.lazy(
1328
- () => Promise.resolve().then(() => require("./EditViewPage-CmMi2Xsn.js")).then((mod) => ({ default: mod.ProtectedEditViewPage }))
1322
+ () => Promise.resolve().then(() => require("./EditViewPage-BSVmMpRd.js")).then((mod) => ({ default: mod.ProtectedEditViewPage }))
1329
1323
  );
1330
1324
  const ProtectedListViewPage = React.lazy(
1331
- () => Promise.resolve().then(() => require("./ListViewPage-DFjn1DNW.js")).then((mod) => ({ default: mod.ProtectedListViewPage }))
1325
+ () => Promise.resolve().then(() => require("./ListViewPage-O8F1pBJo.js")).then((mod) => ({ default: mod.ProtectedListViewPage }))
1332
1326
  );
1333
1327
  const ProtectedListConfiguration = React.lazy(
1334
- () => Promise.resolve().then(() => require("./ListConfigurationPage-Cpy4QqNd.js")).then((mod) => ({
1328
+ () => Promise.resolve().then(() => require("./ListConfigurationPage-Bny6CdWe.js")).then((mod) => ({
1335
1329
  default: mod.ProtectedListConfiguration
1336
1330
  }))
1337
1331
  );
1338
1332
  const ProtectedEditConfigurationPage = React.lazy(
1339
- () => Promise.resolve().then(() => require("./EditConfigurationPage-CEGwxV-L.js")).then((mod) => ({
1333
+ () => Promise.resolve().then(() => require("./EditConfigurationPage-CMaOf-A-.js")).then((mod) => ({
1340
1334
  default: mod.ProtectedEditConfigurationPage
1341
1335
  }))
1342
1336
  );
1343
1337
  const ProtectedComponentConfigurationPage = React.lazy(
1344
- () => Promise.resolve().then(() => require("./ComponentConfigurationPage-BWQv6yRj.js")).then((mod) => ({
1338
+ () => Promise.resolve().then(() => require("./ComponentConfigurationPage-DL1MHO8i.js")).then((mod) => ({
1345
1339
  default: mod.ProtectedComponentConfigurationPage
1346
1340
  }))
1347
1341
  );
1348
1342
  const NoPermissions = React.lazy(
1349
- () => Promise.resolve().then(() => require("./NoPermissionsPage-DKLmDZnZ.js")).then((mod) => ({ default: mod.NoPermissions }))
1343
+ () => Promise.resolve().then(() => require("./NoPermissionsPage-CY46zxnM.js")).then((mod) => ({ default: mod.NoPermissions }))
1350
1344
  );
1351
1345
  const NoContentType = React.lazy(
1352
- () => Promise.resolve().then(() => require("./NoContentTypePage-C-3ykoxs.js")).then((mod) => ({ default: mod.NoContentType }))
1346
+ () => Promise.resolve().then(() => require("./NoContentTypePage-CQWChGPw.js")).then((mod) => ({ default: mod.NoContentType }))
1353
1347
  );
1354
1348
  const CollectionTypePages = () => {
1355
1349
  const { collectionType } = reactRouterDom.useParams();
@@ -1463,7 +1457,7 @@ const DocumentActionButton = (action) => {
1463
1457
  /* @__PURE__ */ jsxRuntime.jsx(
1464
1458
  designSystem.Button,
1465
1459
  {
1466
- flex: 1,
1460
+ flex: "auto",
1467
1461
  startIcon: action.icon,
1468
1462
  disabled: action.disabled,
1469
1463
  onClick: handleClick(action),
@@ -1476,7 +1470,7 @@ const DocumentActionButton = (action) => {
1476
1470
  DocumentActionConfirmDialog,
1477
1471
  {
1478
1472
  ...action.dialog,
1479
- variant: action.variant,
1473
+ variant: action.dialog?.variant ?? action.variant,
1480
1474
  isOpen: dialogId === action.id,
1481
1475
  onClose: handleClose
1482
1476
  }
@@ -1533,9 +1527,9 @@ const DocumentActionsMenu = ({
1533
1527
  disabled: isDisabled,
1534
1528
  size: "S",
1535
1529
  endIcon: null,
1536
- paddingTop: "7px",
1537
- paddingLeft: "9px",
1538
- paddingRight: "9px",
1530
+ paddingTop: "4px",
1531
+ paddingLeft: "7px",
1532
+ paddingRight: "7px",
1539
1533
  variant,
1540
1534
  children: [
1541
1535
  /* @__PURE__ */ jsxRuntime.jsx(Icons.More, { "aria-hidden": true, focusable: false }),
@@ -1555,10 +1549,18 @@ const DocumentActionsMenu = ({
1555
1549
  onSelect: handleClick(action),
1556
1550
  display: "block",
1557
1551
  children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { justifyContent: "space-between", gap: 4, children: [
1558
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { color: convertActionVariantToColor(action.variant), gap: 2, tag: "span", children: [
1559
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { tag: "span", color: convertActionVariantToIconColor(action.variant), children: action.icon }),
1560
- action.label
1561
- ] }),
1552
+ /* @__PURE__ */ jsxRuntime.jsxs(
1553
+ designSystem.Flex,
1554
+ {
1555
+ color: !action.disabled ? convertActionVariantToColor(action.variant) : "inherit",
1556
+ gap: 2,
1557
+ tag: "span",
1558
+ children: [
1559
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: action.icon }),
1560
+ action.label
1561
+ ]
1562
+ }
1563
+ ),
1562
1564
  action.id.startsWith("HistoryAction") && /* @__PURE__ */ jsxRuntime.jsx(
1563
1565
  designSystem.Flex,
1564
1566
  {
@@ -1617,18 +1619,6 @@ const convertActionVariantToColor = (variant = "secondary") => {
1617
1619
  return "primary600";
1618
1620
  }
1619
1621
  };
1620
- const convertActionVariantToIconColor = (variant = "secondary") => {
1621
- switch (variant) {
1622
- case "danger":
1623
- return "danger600";
1624
- case "secondary":
1625
- return "neutral500";
1626
- case "success":
1627
- return "success600";
1628
- default:
1629
- return "primary600";
1630
- }
1631
- };
1632
1622
  const DocumentActionConfirmDialog = ({
1633
1623
  onClose,
1634
1624
  onCancel,
@@ -1682,8 +1672,8 @@ const DocumentActionModal = ({
1682
1672
  };
1683
1673
  return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Root, { open: isOpen, onOpenChange: handleClose, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Modal.Content, { children: [
1684
1674
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Header, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Title, { children: title }) }),
1685
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Body, { children: typeof Content === "function" ? /* @__PURE__ */ jsxRuntime.jsx(Content, { onClose: handleClose }) : Content }),
1686
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Footer, { children: typeof Footer === "function" ? /* @__PURE__ */ jsxRuntime.jsx(Footer, { onClose: handleClose }) : Footer })
1675
+ typeof Content === "function" ? /* @__PURE__ */ jsxRuntime.jsx(Content, { onClose: handleClose }) : /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Body, { children: Content }),
1676
+ typeof Footer === "function" ? /* @__PURE__ */ jsxRuntime.jsx(Footer, { onClose: handleClose }) : Footer
1687
1677
  ] }) });
1688
1678
  };
1689
1679
  const PublishAction$1 = ({
@@ -1705,6 +1695,12 @@ const PublishAction$1 = ({
1705
1695
  ({ canPublish: canPublish2, canCreate: canCreate2, canUpdate: canUpdate2 }) => ({ canPublish: canPublish2, canCreate: canCreate2, canUpdate: canUpdate2 })
1706
1696
  );
1707
1697
  const { publish } = useDocumentActions();
1698
+ const [
1699
+ countDraftRelations,
1700
+ { isLoading: isLoadingDraftRelations, isError: isErrorDraftRelations }
1701
+ ] = useLazyGetDraftRelationCountQuery();
1702
+ const [localCountOfDraftRelations, setLocalCountOfDraftRelations] = React__namespace.useState(0);
1703
+ const [serverCountOfDraftRelations, setServerCountOfDraftRelations] = React__namespace.useState(0);
1708
1704
  const [{ query, rawQuery }] = strapiAdmin.useQueryParams();
1709
1705
  const params = React__namespace.useMemo(() => buildValidParams(query), [query]);
1710
1706
  const modified = strapiAdmin.useForm("PublishAction", ({ modified: modified2 }) => modified2);
@@ -1713,10 +1709,101 @@ const PublishAction$1 = ({
1713
1709
  const validate = strapiAdmin.useForm("PublishAction", (state) => state.validate);
1714
1710
  const setErrors = strapiAdmin.useForm("PublishAction", (state) => state.setErrors);
1715
1711
  const formValues = strapiAdmin.useForm("PublishAction", ({ values }) => values);
1712
+ React__namespace.useEffect(() => {
1713
+ if (isErrorDraftRelations) {
1714
+ toggleNotification({
1715
+ type: "danger",
1716
+ message: formatMessage({
1717
+ id: getTranslation("error.records.fetch-draft-relatons"),
1718
+ defaultMessage: "An error occurred while fetching draft relations on this document."
1719
+ })
1720
+ });
1721
+ }
1722
+ }, [isErrorDraftRelations, toggleNotification, formatMessage]);
1723
+ React__namespace.useEffect(() => {
1724
+ const localDraftRelations = /* @__PURE__ */ new Set();
1725
+ const extractDraftRelations = (data) => {
1726
+ const relations = data.connect || [];
1727
+ relations.forEach((relation) => {
1728
+ if (relation.status === "draft") {
1729
+ localDraftRelations.add(relation.id);
1730
+ }
1731
+ });
1732
+ };
1733
+ const traverseAndExtract = (data) => {
1734
+ Object.entries(data).forEach(([key, value]) => {
1735
+ if (key === "connect" && Array.isArray(value)) {
1736
+ extractDraftRelations({ connect: value });
1737
+ } else if (typeof value === "object" && value !== null) {
1738
+ traverseAndExtract(value);
1739
+ }
1740
+ });
1741
+ };
1742
+ if (!documentId || modified) {
1743
+ traverseAndExtract(formValues);
1744
+ setLocalCountOfDraftRelations(localDraftRelations.size);
1745
+ }
1746
+ }, [documentId, modified, formValues, setLocalCountOfDraftRelations]);
1747
+ React__namespace.useEffect(() => {
1748
+ if (documentId) {
1749
+ const fetchDraftRelationsCount = async () => {
1750
+ const { data, error } = await countDraftRelations({
1751
+ collectionType,
1752
+ model,
1753
+ documentId,
1754
+ params
1755
+ });
1756
+ if (error) {
1757
+ throw error;
1758
+ }
1759
+ if (data) {
1760
+ setServerCountOfDraftRelations(data.data);
1761
+ }
1762
+ };
1763
+ fetchDraftRelationsCount();
1764
+ }
1765
+ }, [documentId, countDraftRelations, collectionType, model, params]);
1716
1766
  const isDocumentPublished = (document?.[PUBLISHED_AT_ATTRIBUTE_NAME] || meta?.availableStatus.some((doc) => doc[PUBLISHED_AT_ATTRIBUTE_NAME] !== null)) && document?.status !== "modified";
1717
1767
  if (!schema?.options?.draftAndPublish) {
1718
1768
  return null;
1719
1769
  }
1770
+ const performPublish = async () => {
1771
+ setSubmitting(true);
1772
+ try {
1773
+ const { errors } = await validate();
1774
+ if (errors) {
1775
+ toggleNotification({
1776
+ type: "danger",
1777
+ message: formatMessage({
1778
+ id: "content-manager.validation.error",
1779
+ defaultMessage: "There are validation errors in your document. Please fix them before saving."
1780
+ })
1781
+ });
1782
+ return;
1783
+ }
1784
+ const res = await publish(
1785
+ {
1786
+ collectionType,
1787
+ model,
1788
+ documentId,
1789
+ params
1790
+ },
1791
+ formValues
1792
+ );
1793
+ if ("data" in res && collectionType !== SINGLE_TYPES) {
1794
+ navigate({
1795
+ pathname: `../${collectionType}/${model}/${res.data.documentId}`,
1796
+ search: rawQuery
1797
+ });
1798
+ } else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
1799
+ setErrors(formatValidationErrors(res.error));
1800
+ }
1801
+ } finally {
1802
+ setSubmitting(false);
1803
+ }
1804
+ };
1805
+ const totalDraftRelations = localCountOfDraftRelations + serverCountOfDraftRelations;
1806
+ const hasDraftRelations = totalDraftRelations > 0;
1720
1807
  return {
1721
1808
  /**
1722
1809
  * Disabled when:
@@ -1726,49 +1813,39 @@ const PublishAction$1 = ({
1726
1813
  * - the document is already published & not modified
1727
1814
  * - the document is being created & not modified
1728
1815
  * - the user doesn't have the permission to publish
1729
- * - the user doesn't have the permission to create a new document
1730
- * - the user doesn't have the permission to update the document
1731
1816
  */
1732
- disabled: isCloning || isSubmitting || activeTab === "published" || !modified && isDocumentPublished || !modified && !document?.documentId || !canPublish || Boolean(!document?.documentId && !canCreate || document?.documentId && !canUpdate),
1817
+ disabled: isCloning || isSubmitting || isLoadingDraftRelations || activeTab === "published" || !modified && isDocumentPublished || !modified && !document?.documentId || !canPublish,
1733
1818
  label: formatMessage({
1734
1819
  id: "app.utils.publish",
1735
1820
  defaultMessage: "Publish"
1736
1821
  }),
1737
1822
  onClick: async () => {
1738
- setSubmitting(true);
1739
- try {
1740
- const { errors } = await validate();
1741
- if (errors) {
1742
- toggleNotification({
1743
- type: "danger",
1744
- message: formatMessage({
1745
- id: "content-manager.validation.error",
1746
- defaultMessage: "There are validation errors in your document. Please fix them before saving."
1747
- })
1748
- });
1749
- return;
1750
- }
1751
- const res = await publish(
1752
- {
1753
- collectionType,
1754
- model,
1755
- documentId,
1756
- params
1757
- },
1758
- formValues
1759
- );
1760
- if ("data" in res && collectionType !== SINGLE_TYPES) {
1761
- navigate({
1762
- pathname: `../${collectionType}/${model}/${res.data.documentId}`,
1763
- search: rawQuery
1764
- });
1765
- } else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
1766
- setErrors(formatValidationErrors(res.error));
1823
+ if (hasDraftRelations) {
1824
+ return;
1825
+ }
1826
+ await performPublish();
1827
+ },
1828
+ dialog: hasDraftRelations ? {
1829
+ type: "dialog",
1830
+ variant: "danger",
1831
+ footer: null,
1832
+ title: formatMessage({
1833
+ id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.title`),
1834
+ defaultMessage: "Confirmation"
1835
+ }),
1836
+ content: formatMessage(
1837
+ {
1838
+ id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.message`),
1839
+ defaultMessage: "This entry is related to {count, plural, one {# draft entry} other {# draft entries}}. Publishing it could leave broken links in your app."
1840
+ },
1841
+ {
1842
+ count: totalDraftRelations
1767
1843
  }
1768
- } finally {
1769
- setSubmitting(false);
1844
+ ),
1845
+ onConfirm: async () => {
1846
+ await performPublish();
1770
1847
  }
1771
- }
1848
+ } : void 0
1772
1849
  };
1773
1850
  };
1774
1851
  PublishAction$1.type = "publish";
@@ -1784,7 +1861,7 @@ const UpdateAction = ({
1784
1861
  const cloneMatch = reactRouterDom.useMatch(CLONE_PATH);
1785
1862
  const isCloning = cloneMatch !== null;
1786
1863
  const { formatMessage } = reactIntl.useIntl();
1787
- const { canCreate, canUpdate } = useDocumentRBAC("UpdateAction", ({ canCreate: canCreate2, canUpdate: canUpdate2 }) => ({
1864
+ useDocumentRBAC("UpdateAction", ({ canCreate: canCreate2, canUpdate: canUpdate2 }) => ({
1788
1865
  canCreate: canCreate2,
1789
1866
  canUpdate: canUpdate2
1790
1867
  }));
@@ -1804,10 +1881,8 @@ const UpdateAction = ({
1804
1881
  * - the form is submitting
1805
1882
  * - the document is not modified & we're not cloning (you can save a clone entity straight away)
1806
1883
  * - the active tab is the published tab
1807
- * - the user doesn't have the permission to create a new document
1808
- * - the user doesn't have the permission to update the document
1809
1884
  */
1810
- disabled: isSubmitting || !modified && !isCloning || activeTab === "published" || Boolean(!documentId && !canCreate || documentId && !canUpdate),
1885
+ disabled: isSubmitting || !modified && !isCloning || activeTab === "published",
1811
1886
  label: formatMessage({
1812
1887
  id: "content-manager.containers.Edit.save",
1813
1888
  defaultMessage: "Save"
@@ -1836,10 +1911,13 @@ const UpdateAction = ({
1836
1911
  document
1837
1912
  );
1838
1913
  if ("data" in res) {
1839
- navigate({
1840
- pathname: `../${collectionType}/${model}/${res.data.documentId}`,
1841
- search: rawQuery
1842
- });
1914
+ navigate(
1915
+ {
1916
+ pathname: `../${res.data.documentId}`,
1917
+ search: rawQuery
1918
+ },
1919
+ { relative: "path" }
1920
+ );
1843
1921
  } else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
1844
1922
  setErrors(formatValidationErrors(res.error));
1845
1923
  }
@@ -1869,10 +1947,10 @@ const UpdateAction = ({
1869
1947
  if ("data" in res && collectionType !== SINGLE_TYPES) {
1870
1948
  navigate(
1871
1949
  {
1872
- pathname: `../${collectionType}/${model}/${res.data.documentId}`,
1950
+ pathname: `../${res.data.documentId}`,
1873
1951
  search: rawQuery
1874
1952
  },
1875
- { replace: true }
1953
+ { replace: true, relative: "path" }
1876
1954
  );
1877
1955
  } else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
1878
1956
  setErrors(formatValidationErrors(res.error));
@@ -2119,23 +2197,13 @@ const Header = ({ isCreating, status, title: documentTitle = "Untitled" }) => {
2119
2197
  id: "content-manager.containers.edit.title.new",
2120
2198
  defaultMessage: "Create an entry"
2121
2199
  }) : documentTitle;
2122
- return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "flex-start", paddingTop: 8, paddingBottom: 4, gap: 3, children: [
2200
+ return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "flex-start", paddingTop: 6, paddingBottom: 4, gap: 2, children: [
2123
2201
  /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.BackButton, {}),
2124
- /* @__PURE__ */ jsxRuntime.jsxs(
2125
- designSystem.Flex,
2126
- {
2127
- width: "100%",
2128
- justifyContent: "space-between",
2129
- paddingTop: 1,
2130
- gap: "80px",
2131
- alignItems: "flex-start",
2132
- children: [
2133
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "alpha", tag: "h1", children: title }),
2134
- /* @__PURE__ */ jsxRuntime.jsx(HeaderToolbar, {})
2135
- ]
2136
- }
2137
- ),
2138
- status ? /* @__PURE__ */ jsxRuntime.jsx(DocumentStatus, { status: isCloning ? "draft" : status }) : null
2202
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { width: "100%", justifyContent: "space-between", gap: "80px", alignItems: "flex-start", children: [
2203
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "alpha", tag: "h1", children: title }),
2204
+ /* @__PURE__ */ jsxRuntime.jsx(HeaderToolbar, {})
2205
+ ] }),
2206
+ status ? /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { marginTop: 1, children: /* @__PURE__ */ jsxRuntime.jsx(DocumentStatus, { status: isCloning ? "draft" : status }) }) : null
2139
2207
  ] });
2140
2208
  };
2141
2209
  const HeaderToolbar = () => {
@@ -2826,7 +2894,7 @@ const ConfirmBulkActionDialog = ({
2826
2894
  endAction
2827
2895
  }) => {
2828
2896
  const { formatMessage } = reactIntl.useIntl();
2829
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Dialog.Root, { onOpenChange: onToggleDialog, open: isOpen, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Dialog.Content, { children: [
2897
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Dialog.Root, { open: isOpen, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Dialog.Content, { children: [
2830
2898
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Dialog.Header, { children: formatMessage({
2831
2899
  id: "app.components.ConfirmDialog.title",
2832
2900
  defaultMessage: "Confirmation"
@@ -3617,8 +3685,7 @@ class ContentManagerPlugin {
3617
3685
  documentActions = [
3618
3686
  ...DEFAULT_ACTIONS,
3619
3687
  ...DEFAULT_TABLE_ROW_ACTIONS,
3620
- ...DEFAULT_HEADER_ACTIONS,
3621
- HistoryAction
3688
+ ...DEFAULT_HEADER_ACTIONS
3622
3689
  ];
3623
3690
  editViewSidePanels = [ActionsPanel];
3624
3691
  headerActions = [];
@@ -3707,6 +3774,52 @@ const getPrintableType = (value) => {
3707
3774
  }
3708
3775
  return nativeType;
3709
3776
  };
3777
+ const HistoryAction = ({ model, document }) => {
3778
+ const { formatMessage } = reactIntl.useIntl();
3779
+ const [{ query }] = strapiAdmin.useQueryParams();
3780
+ const navigate = reactRouterDom.useNavigate();
3781
+ const pluginsQueryParams = qs.stringify({ plugins: query.plugins }, { encode: false });
3782
+ if (!window.strapi.features.isEnabled("cms-content-history")) {
3783
+ return null;
3784
+ }
3785
+ return {
3786
+ icon: /* @__PURE__ */ jsxRuntime.jsx(Icons.ClockCounterClockwise, {}),
3787
+ label: formatMessage({
3788
+ id: "content-manager.history.document-action",
3789
+ defaultMessage: "Content History"
3790
+ }),
3791
+ onClick: () => navigate({ pathname: "history", search: pluginsQueryParams }),
3792
+ disabled: (
3793
+ /**
3794
+ * The user is creating a new document.
3795
+ * It hasn't been saved yet, so there's no history to go to
3796
+ */
3797
+ !document || /**
3798
+ * The document has been created but the current dimension has never been saved.
3799
+ * For example, the user is creating a new locale in an existing document,
3800
+ * so there's no history for the document in that locale
3801
+ */
3802
+ !document.id || /**
3803
+ * History is only available for content types created by the user.
3804
+ * These have the `api::` prefix, as opposed to the ones created by Strapi or plugins,
3805
+ * which start with `admin::` or `plugin::`
3806
+ */
3807
+ !model.startsWith("api::")
3808
+ ),
3809
+ position: "header"
3810
+ };
3811
+ };
3812
+ HistoryAction.type = "history";
3813
+ const historyAdmin = {
3814
+ bootstrap(app) {
3815
+ const { addDocumentAction } = app.getPlugin("content-manager").apis;
3816
+ addDocumentAction((actions2) => {
3817
+ const indexOfDeleteAction = actions2.findIndex((action) => action.type === "delete");
3818
+ actions2.splice(indexOfDeleteAction, 0, HistoryAction);
3819
+ return actions2;
3820
+ });
3821
+ }
3822
+ };
3710
3823
  const initialState = {
3711
3824
  collectionTypeLinks: [],
3712
3825
  components: [],
@@ -3762,7 +3875,7 @@ const index = {
3762
3875
  app.router.addRoute({
3763
3876
  path: "content-manager/*",
3764
3877
  lazy: async () => {
3765
- const { Layout } = await Promise.resolve().then(() => require("./layout-DRuJUpas.js"));
3878
+ const { Layout } = await Promise.resolve().then(() => require("./layout-P3eKO1Qy.js"));
3766
3879
  return {
3767
3880
  Component: Layout
3768
3881
  };
@@ -3771,10 +3884,15 @@ const index = {
3771
3884
  });
3772
3885
  app.registerPlugin(cm.config);
3773
3886
  },
3887
+ bootstrap(app) {
3888
+ if (typeof historyAdmin.bootstrap === "function") {
3889
+ historyAdmin.bootstrap(app);
3890
+ }
3891
+ },
3774
3892
  async registerTrads({ locales }) {
3775
3893
  const importedTrads = await Promise.all(
3776
3894
  locales.map((locale) => {
3777
- 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-fbKQxLGn.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 }) => {
3895
+ 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-uOUIxfcQ.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 }) => {
3778
3896
  return {
3779
3897
  data: prefixPluginTranslations(data, PLUGIN_ID),
3780
3898
  locale
@@ -3831,4 +3949,4 @@ exports.useGetAllDocumentsQuery = useGetAllDocumentsQuery;
3831
3949
  exports.useGetContentTypeConfigurationQuery = useGetContentTypeConfigurationQuery;
3832
3950
  exports.useGetInitialDataQuery = useGetInitialDataQuery;
3833
3951
  exports.useUpdateContentTypeConfigurationMutation = useUpdateContentTypeConfigurationMutation;
3834
- //# sourceMappingURL=index-Buwn78Rt.js.map
3952
+ //# sourceMappingURL=index-5EMXLEM_.js.map