@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
@@ -0,0 +1,312 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const React = require("react");
5
+ const strapiAdmin = require("@strapi/admin/strapi-admin");
6
+ const designSystem = require("@strapi/design-system");
7
+ const reactIntl = require("react-intl");
8
+ const reactRouterDom = require("react-router-dom");
9
+ const index = require("./index-Ca7YWlAA.js");
10
+ const Icons = require("@strapi/icons");
11
+ const qs = require("qs");
12
+ const styledComponents = require("styled-components");
13
+ const EditViewPage = require("./EditViewPage-B-kExt8C.js");
14
+ function _interopNamespace(e) {
15
+ if (e && e.__esModule) return e;
16
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
17
+ if (e) {
18
+ for (const k in e) {
19
+ if (k !== "default") {
20
+ const d = Object.getOwnPropertyDescriptor(e, k);
21
+ Object.defineProperty(n, k, d.get ? d : {
22
+ enumerable: true,
23
+ get: () => e[k]
24
+ });
25
+ }
26
+ }
27
+ }
28
+ n.default = e;
29
+ return Object.freeze(n);
30
+ }
31
+ const React__namespace = /* @__PURE__ */ _interopNamespace(React);
32
+ const PreviewContent = () => {
33
+ const previewUrl = usePreviewContext("PreviewContent", (state) => state.url);
34
+ const { formatMessage } = reactIntl.useIntl();
35
+ return /* @__PURE__ */ jsxRuntime.jsx(
36
+ designSystem.Box,
37
+ {
38
+ src: previewUrl,
39
+ title: formatMessage({
40
+ id: "content-manager.preview.panel.title",
41
+ defaultMessage: "Preview"
42
+ }),
43
+ width: "100%",
44
+ height: "100%",
45
+ borderWidth: 0,
46
+ tag: "iframe"
47
+ },
48
+ previewUrl
49
+ );
50
+ };
51
+ const ClosePreviewButton = () => {
52
+ const [{ query }] = strapiAdmin.useQueryParams();
53
+ const { formatMessage } = reactIntl.useIntl();
54
+ const canGoBack = strapiAdmin.useHistory("BackButton", (state) => state.canGoBack);
55
+ const goBack = strapiAdmin.useHistory("BackButton", (state) => state.goBack);
56
+ const history = strapiAdmin.useHistory("BackButton", (state) => state.history);
57
+ const locationIndex = strapiAdmin.useHistory("BackButton", (state) => state.currentLocationIndex);
58
+ const historyTo = canGoBack ? history.at(locationIndex - 2) : void 0;
59
+ const fallback = {
60
+ pathname: "..",
61
+ search: qs.stringify(query, { encode: false })
62
+ };
63
+ const toWithFallback = historyTo ?? fallback;
64
+ const handleClick = (e) => {
65
+ if (canGoBack) {
66
+ e.preventDefault();
67
+ goBack();
68
+ return;
69
+ }
70
+ };
71
+ return /* @__PURE__ */ jsxRuntime.jsx(
72
+ designSystem.IconButton,
73
+ {
74
+ tag: reactRouterDom.Link,
75
+ relative: "path",
76
+ to: toWithFallback,
77
+ onClick: handleClick,
78
+ label: formatMessage({
79
+ id: "content-manager.preview.header.close",
80
+ defaultMessage: "Close preview"
81
+ }),
82
+ children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Cross, {})
83
+ }
84
+ );
85
+ };
86
+ const Status = () => {
87
+ const document = usePreviewContext("PreviewHeader", (state) => state.document);
88
+ const schema = usePreviewContext("PreviewHeader", (state) => state.schema);
89
+ const meta = usePreviewContext("PreviewHeader", (state) => state.meta);
90
+ const hasDraftAndPublished = schema?.options?.draftAndPublish ?? false;
91
+ if (!hasDraftAndPublished) {
92
+ return null;
93
+ }
94
+ const status = EditViewPage.getDocumentStatus(document, meta);
95
+ return /* @__PURE__ */ jsxRuntime.jsx(index.DocumentStatus, { status, size: "XS" });
96
+ };
97
+ const PreviewTabs = () => {
98
+ const { formatMessage } = reactIntl.useIntl();
99
+ const [{ query }, setQuery] = strapiAdmin.useQueryParams();
100
+ const document = usePreviewContext("PreviewHeader", (state) => state.document);
101
+ const schema = usePreviewContext("PreviewHeader", (state) => state.schema);
102
+ const meta = usePreviewContext("PreviewHeader", (state) => state.meta);
103
+ const hasDraftAndPublish = schema?.options?.draftAndPublish ?? false;
104
+ const documentStatus = EditViewPage.getDocumentStatus(document, meta);
105
+ const handleTabChange = (status) => {
106
+ if (status === "published" || status === "draft") {
107
+ setQuery({ status }, "push", true);
108
+ }
109
+ };
110
+ if (!hasDraftAndPublish) {
111
+ return null;
112
+ }
113
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tabs.Root, { variant: "simple", value: query.status || "draft", onValueChange: handleTabChange, children: /* @__PURE__ */ jsxRuntime.jsxs(
114
+ designSystem.Tabs.List,
115
+ {
116
+ "aria-label": formatMessage({
117
+ id: "preview.tabs.label",
118
+ defaultMessage: "Document status"
119
+ }),
120
+ children: [
121
+ /* @__PURE__ */ jsxRuntime.jsx(StatusTab, { value: "draft", children: formatMessage({
122
+ id: "content-manager.containers.List.draft",
123
+ defaultMessage: "draft"
124
+ }) }),
125
+ /* @__PURE__ */ jsxRuntime.jsx(StatusTab, { value: "published", disabled: documentStatus === "draft", children: formatMessage({
126
+ id: "content-manager.containers.List.published",
127
+ defaultMessage: "published"
128
+ }) })
129
+ ]
130
+ }
131
+ ) }) });
132
+ };
133
+ const PreviewHeader = () => {
134
+ const mainField = usePreviewContext("PreviewHeader", (state) => state.mainField);
135
+ const document = usePreviewContext("PreviewHeader", (state) => state.document);
136
+ const schema = usePreviewContext("PreviewHeader", (state) => state.schema);
137
+ let documentTitle = "Untitled";
138
+ if (mainField !== "id" && document?.[mainField]) {
139
+ documentTitle = document[mainField];
140
+ } else if (schema.kind === "singleType" && schema?.info.displayName) {
141
+ documentTitle = schema.info.displayName;
142
+ }
143
+ const { formatMessage } = reactIntl.useIntl();
144
+ const { toggleNotification } = strapiAdmin.useNotification();
145
+ const { copy } = strapiAdmin.useClipboard();
146
+ const handleCopyLink = () => {
147
+ copy(window.location.href);
148
+ toggleNotification({
149
+ message: formatMessage({
150
+ id: "content-manager.preview.copy.success",
151
+ defaultMessage: "Copied preview link"
152
+ }),
153
+ type: "success"
154
+ });
155
+ };
156
+ return /* @__PURE__ */ jsxRuntime.jsxs(
157
+ designSystem.Grid.Root,
158
+ {
159
+ gap: 3,
160
+ gridCols: 3,
161
+ paddingLeft: 2,
162
+ paddingRight: 2,
163
+ background: "neutral0",
164
+ borderColor: "neutral150",
165
+ tag: "header",
166
+ children: [
167
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid.Item, { xs: 1, paddingTop: 2, paddingBottom: 2, gap: 3, children: [
168
+ /* @__PURE__ */ jsxRuntime.jsx(ClosePreviewButton, {}),
169
+ /* @__PURE__ */ jsxRuntime.jsx(PreviewTitle, { tag: "h1", fontWeight: 600, fontSize: 2, maxWidth: "200px", title: documentTitle, children: documentTitle }),
170
+ /* @__PURE__ */ jsxRuntime.jsx(Status, {})
171
+ ] }),
172
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { xs: 1, marginBottom: "-1px", alignItems: "end", margin: "auto", children: /* @__PURE__ */ jsxRuntime.jsx(PreviewTabs, {}) }),
173
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { xs: 1, justifyContent: "end", paddingTop: 2, paddingBottom: 2, children: /* @__PURE__ */ jsxRuntime.jsx(
174
+ designSystem.IconButton,
175
+ {
176
+ type: "button",
177
+ label: formatMessage({
178
+ id: "preview.copy.label",
179
+ defaultMessage: "Copy preview link"
180
+ }),
181
+ onClick: handleCopyLink,
182
+ children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Link, {})
183
+ }
184
+ ) })
185
+ ]
186
+ }
187
+ );
188
+ };
189
+ const PreviewTitle = styledComponents.styled(designSystem.Typography)`
190
+ overflow: hidden;
191
+ text-overflow: ellipsis;
192
+ white-space: nowrap;
193
+ `;
194
+ const StatusTab = styledComponents.styled(designSystem.Tabs.Trigger)`
195
+ text-transform: uppercase;
196
+ `;
197
+ const [PreviewProvider, usePreviewContext] = strapiAdmin.createContext("PreviewPage");
198
+ const PreviewPage = () => {
199
+ const { formatMessage } = reactIntl.useIntl();
200
+ const {
201
+ slug: model,
202
+ id: documentId,
203
+ collectionType
204
+ } = reactRouterDom.useParams();
205
+ const [{ query }] = strapiAdmin.useQueryParams();
206
+ const params = React__namespace.useMemo(() => index.buildValidParams(query), [query]);
207
+ if (!collectionType) {
208
+ throw new Error("Could not find collectionType in url params");
209
+ }
210
+ if (!model) {
211
+ throw new Error("Could not find model in url params");
212
+ }
213
+ if (collectionType === index.COLLECTION_TYPES && !documentId) {
214
+ throw new Error("Could not find documentId in url params");
215
+ }
216
+ const previewUrlResponse = index.useGetPreviewUrlQuery({
217
+ params: {
218
+ contentType: model
219
+ },
220
+ query: {
221
+ documentId,
222
+ locale: params.locale,
223
+ status: params.status
224
+ }
225
+ });
226
+ const documentResponse = index.useDocument({
227
+ model,
228
+ collectionType,
229
+ documentId,
230
+ params
231
+ });
232
+ const documentLayoutResponse = index.useDocumentLayout(model);
233
+ if (documentResponse.isLoading || previewUrlResponse.isLoading || documentLayoutResponse.isLoading) {
234
+ return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
235
+ }
236
+ if (previewUrlResponse.error || documentLayoutResponse.error || !documentResponse.document || !documentResponse.meta || !documentResponse.schema) {
237
+ return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Error, {});
238
+ }
239
+ if (!previewUrlResponse.data?.data?.url) {
240
+ return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.NoData, {});
241
+ }
242
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
243
+ /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Title, { children: formatMessage(
244
+ {
245
+ id: "content-manager.preview.page-title",
246
+ defaultMessage: "{contentType} preview"
247
+ },
248
+ {
249
+ contentType: documentLayoutResponse.edit.settings.displayName
250
+ }
251
+ ) }),
252
+ /* @__PURE__ */ jsxRuntime.jsx(
253
+ PreviewProvider,
254
+ {
255
+ url: previewUrlResponse.data.data.url,
256
+ mainField: documentLayoutResponse.edit.settings.mainField,
257
+ document: documentResponse.document,
258
+ meta: documentResponse.meta,
259
+ schema: documentResponse.schema,
260
+ children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", height: "100%", alignItems: "stretch", children: [
261
+ /* @__PURE__ */ jsxRuntime.jsx(PreviewHeader, {}),
262
+ /* @__PURE__ */ jsxRuntime.jsx(PreviewContent, {})
263
+ ] })
264
+ }
265
+ )
266
+ ] });
267
+ };
268
+ const ProtectedPreviewPageImpl = () => {
269
+ const { slug: model } = reactRouterDom.useParams();
270
+ const {
271
+ permissions = [],
272
+ isLoading,
273
+ error
274
+ } = strapiAdmin.useRBAC([{ action: "plugin::content-manager.explorer.read", subject: model }]);
275
+ if (isLoading) {
276
+ return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
277
+ }
278
+ if (error || !model) {
279
+ return /* @__PURE__ */ jsxRuntime.jsx(
280
+ designSystem.Box,
281
+ {
282
+ height: "100vh",
283
+ width: "100vw",
284
+ position: "fixed",
285
+ top: 0,
286
+ left: 0,
287
+ zIndex: 2,
288
+ background: "neutral0",
289
+ children: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Error, {})
290
+ }
291
+ );
292
+ }
293
+ return /* @__PURE__ */ jsxRuntime.jsx(
294
+ designSystem.Box,
295
+ {
296
+ height: "100vh",
297
+ width: "100vw",
298
+ position: "fixed",
299
+ top: 0,
300
+ left: 0,
301
+ zIndex: 2,
302
+ background: "neutral0",
303
+ children: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Protect, { permissions, children: ({ permissions: permissions2 }) => /* @__PURE__ */ jsxRuntime.jsx(index.DocumentRBAC, { permissions: permissions2, children: /* @__PURE__ */ jsxRuntime.jsx(PreviewPage, {}) }) })
304
+ }
305
+ );
306
+ };
307
+ const ProtectedPreviewPage = () => {
308
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.FocusTrap, { children: /* @__PURE__ */ jsxRuntime.jsx(ProtectedPreviewPageImpl, {}) }) });
309
+ };
310
+ exports.ProtectedPreviewPage = ProtectedPreviewPage;
311
+ exports.usePreviewContext = usePreviewContext;
312
+ //# sourceMappingURL=Preview-DaOihysv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Preview-DaOihysv.js","sources":["../../admin/src/preview/components/PreviewContent.tsx","../../admin/src/preview/components/PreviewHeader.tsx","../../admin/src/preview/pages/Preview.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { usePreviewContext } from '../pages/Preview';\n\nconst PreviewContent = () => {\n const previewUrl = usePreviewContext('PreviewContent', (state) => state.url);\n\n const { formatMessage } = useIntl();\n\n return (\n <Box\n src={previewUrl}\n /**\n * For some reason, changing an iframe's src tag causes the browser to add a new item in the\n * history stack. This is an issue for us as it means clicking the back button will not let us\n * go back to the edit view. To fix it, we need to trick the browser into thinking this is a\n * different iframe when the preview URL changes. So we set a key prop to force React\n * to mount a different node when the src changes.\n */\n key={previewUrl}\n title={formatMessage({\n id: 'content-manager.preview.panel.title',\n defaultMessage: 'Preview',\n })}\n width=\"100%\"\n height=\"100%\"\n borderWidth={0}\n tag=\"iframe\"\n />\n );\n};\n\nexport { PreviewContent };\n","import * as React from 'react';\n\nimport {\n useClipboard,\n useHistory,\n useNotification,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport { IconButton, Tabs, Typography, Grid } from '@strapi/design-system';\nimport { Cross, Link as LinkIcon } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link, type To } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport { getDocumentStatus } from '../../pages/EditView/EditViewPage';\nimport { usePreviewContext } from '../pages/Preview';\n\n/* -------------------------------------------------------------------------------------------------\n * ClosePreviewButton\n * -----------------------------------------------------------------------------------------------*/\n\nconst ClosePreviewButton = () => {\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n }>();\n const { formatMessage } = useIntl();\n\n const canGoBack = useHistory('BackButton', (state) => state.canGoBack);\n const goBack = useHistory('BackButton', (state) => state.goBack);\n const history = useHistory('BackButton', (state) => state.history);\n const locationIndex = useHistory('BackButton', (state) => state.currentLocationIndex);\n\n /**\n * Get the link destination from the history.\n * Rely on a fallback (the parent edit view page) if there's no page to go back .\n */\n const historyTo = canGoBack ? history.at(locationIndex - 2) : undefined;\n const fallback = {\n pathname: '..',\n search: stringify(query, { encode: false }),\n } satisfies To;\n const toWithFallback = historyTo ?? fallback;\n\n const handleClick = (e: React.MouseEvent) => {\n if (canGoBack) {\n // Prevent normal link behavior, go back in the history stack instead\n e.preventDefault();\n goBack();\n return;\n }\n\n // Otherwise rely on native link behavior to go back to the edit view. We don't use navigate()\n // here in order to get the relative=\"path\" functionality from the Link component.\n };\n\n return (\n <IconButton\n tag={Link}\n relative=\"path\"\n to={toWithFallback}\n onClick={handleClick}\n label={formatMessage({\n id: 'content-manager.preview.header.close',\n defaultMessage: 'Close preview',\n })}\n >\n <Cross />\n </IconButton>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Status\n * -----------------------------------------------------------------------------------------------*/\n\nconst Status = () => {\n // Get status\n const document = usePreviewContext('PreviewHeader', (state) => state.document);\n const schema = usePreviewContext('PreviewHeader', (state) => state.schema);\n const meta = usePreviewContext('PreviewHeader', (state) => state.meta);\n const hasDraftAndPublished = schema?.options?.draftAndPublish ?? false;\n\n if (!hasDraftAndPublished) {\n return null;\n }\n\n const status = getDocumentStatus(document, meta);\n\n return <DocumentStatus status={status} size=\"XS\" />;\n};\n\nconst PreviewTabs = () => {\n const { formatMessage } = useIntl();\n\n // URL query params\n const [{ query }, setQuery] = useQueryParams<{ status: 'draft' | 'published' }>();\n\n // Get status\n const document = usePreviewContext('PreviewHeader', (state) => state.document);\n const schema = usePreviewContext('PreviewHeader', (state) => state.schema);\n const meta = usePreviewContext('PreviewHeader', (state) => state.meta);\n const hasDraftAndPublish = schema?.options?.draftAndPublish ?? false;\n const documentStatus = getDocumentStatus(document, meta);\n\n const handleTabChange = (status: string) => {\n if (status === 'published' || status === 'draft') {\n setQuery({ status }, 'push', true);\n }\n };\n\n if (!hasDraftAndPublish) {\n return null;\n }\n\n return (\n <>\n <Tabs.Root variant=\"simple\" value={query.status || 'draft'} onValueChange={handleTabChange}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'preview.tabs.label',\n defaultMessage: 'Document status',\n })}\n >\n <StatusTab value=\"draft\">\n {formatMessage({\n id: 'content-manager.containers.List.draft',\n defaultMessage: 'draft',\n })}\n </StatusTab>\n <StatusTab value=\"published\" disabled={documentStatus === 'draft'}>\n {formatMessage({\n id: 'content-manager.containers.List.published',\n defaultMessage: 'published',\n })}\n </StatusTab>\n </Tabs.List>\n </Tabs.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewHeader\n * -----------------------------------------------------------------------------------------------*/\n\nconst PreviewHeader = () => {\n // Get main field\n const mainField = usePreviewContext('PreviewHeader', (state) => state.mainField);\n const document = usePreviewContext('PreviewHeader', (state) => state.document);\n const schema = usePreviewContext('PreviewHeader', (state) => state.schema);\n\n /**\n * We look to see what the mainField is from the configuration, if it's an id\n * we don't use it because it's a uuid format and not very user friendly.\n * Instead, we display the schema name for single-type documents\n * or \"Untitled\".\n */\n let documentTitle = 'Untitled';\n if (mainField !== 'id' && document?.[mainField]) {\n documentTitle = document[mainField];\n } else if (schema.kind === 'singleType' && schema?.info.displayName) {\n documentTitle = schema.info.displayName;\n }\n\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { copy } = useClipboard();\n\n const handleCopyLink = () => {\n copy(window.location.href);\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.preview.copy.success',\n defaultMessage: 'Copied preview link',\n }),\n type: 'success',\n });\n };\n\n return (\n <Grid.Root\n gap={3}\n gridCols={3}\n paddingLeft={2}\n paddingRight={2}\n background=\"neutral0\"\n borderColor=\"neutral150\"\n tag=\"header\"\n >\n {/* Title and status */}\n <Grid.Item xs={1} paddingTop={2} paddingBottom={2} gap={3}>\n <ClosePreviewButton />\n <PreviewTitle tag=\"h1\" fontWeight={600} fontSize={2} maxWidth=\"200px\" title={documentTitle}>\n {documentTitle}\n </PreviewTitle>\n <Status />\n </Grid.Item>\n {/* Tabs */}\n <Grid.Item xs={1} marginBottom=\"-1px\" alignItems=\"end\" margin=\"auto\">\n <PreviewTabs />\n </Grid.Item>\n {/* Copy link */}\n <Grid.Item xs={1} justifyContent=\"end\" paddingTop={2} paddingBottom={2}>\n <IconButton\n type=\"button\"\n label={formatMessage({\n id: 'preview.copy.label',\n defaultMessage: 'Copy preview link',\n })}\n onClick={handleCopyLink}\n >\n <LinkIcon />\n </IconButton>\n </Grid.Item>\n </Grid.Root>\n );\n};\n\nconst PreviewTitle = styled(Typography)`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst StatusTab = styled(Tabs.Trigger)`\n text-transform: uppercase;\n`;\n\nexport { PreviewHeader };\n","import * as React from 'react';\n\nimport { Page, useQueryParams, useRBAC, createContext } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, FocusTrap, Portal } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useParams } from 'react-router-dom';\n\nimport { GetPreviewUrl } from '../../../../shared/contracts/preview';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { DocumentRBAC } from '../../features/DocumentRBAC';\nimport { type UseDocument, useDocument } from '../../hooks/useDocument';\nimport { useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { buildValidParams } from '../../utils/api';\nimport { PreviewContent } from '../components/PreviewContent';\nimport { PreviewHeader } from '../components/PreviewHeader';\nimport { useGetPreviewUrlQuery } from '../services/preview';\n\nimport type { UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PreviewContextValue {\n url: string;\n mainField: string;\n document: NonNullable<ReturnType<UseDocument>['document']>;\n meta: NonNullable<ReturnType<UseDocument>['meta']>;\n schema: NonNullable<ReturnType<UseDocument>['schema']>;\n}\n\nconst [PreviewProvider, usePreviewContext] = createContext<PreviewContextValue>('PreviewPage');\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst PreviewPage = () => {\n const { formatMessage } = useIntl();\n\n // Read all the necessary data from the URL to find the right preview URL\n const {\n slug: model,\n id: documentId,\n collectionType,\n } = useParams<{\n slug: UID.ContentType;\n id: string;\n collectionType: string;\n }>();\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n }>();\n\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n if (!collectionType) {\n throw new Error('Could not find collectionType in url params');\n }\n\n if (!model) {\n throw new Error('Could not find model in url params');\n }\n\n // Only collection types must have a documentId\n if (collectionType === COLLECTION_TYPES && !documentId) {\n throw new Error('Could not find documentId in url params');\n }\n\n const previewUrlResponse = useGetPreviewUrlQuery({\n params: {\n contentType: model,\n },\n query: {\n documentId,\n locale: params.locale,\n status: params.status as GetPreviewUrl.Request['query']['status'],\n },\n });\n\n const documentResponse = useDocument({\n model,\n collectionType,\n documentId,\n params,\n });\n\n const documentLayoutResponse = useDocumentLayout(model);\n\n if (\n documentResponse.isLoading ||\n previewUrlResponse.isLoading ||\n documentLayoutResponse.isLoading\n ) {\n return <Page.Loading />;\n }\n\n if (\n previewUrlResponse.error ||\n documentLayoutResponse.error ||\n !documentResponse.document ||\n !documentResponse.meta ||\n !documentResponse.schema\n ) {\n return <Page.Error />;\n }\n\n if (!previewUrlResponse.data?.data?.url) {\n return <Page.NoData />;\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n {\n id: 'content-manager.preview.page-title',\n defaultMessage: '{contentType} preview',\n },\n {\n contentType: documentLayoutResponse.edit.settings.displayName,\n }\n )}\n </Page.Title>\n <PreviewProvider\n url={previewUrlResponse.data.data.url}\n mainField={documentLayoutResponse.edit.settings.mainField}\n document={documentResponse.document}\n meta={documentResponse.meta}\n schema={documentResponse.schema}\n >\n <Flex direction=\"column\" height=\"100%\" alignItems={'stretch'}>\n <PreviewHeader />\n <PreviewContent />\n </Flex>\n </PreviewProvider>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedPreviewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedPreviewPageImpl = () => {\n const { slug: model } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC([{ action: 'plugin::content-manager.explorer.read', subject: model }]);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !model) {\n return (\n <Box\n height=\"100vh\"\n width=\"100vw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={2}\n background=\"neutral0\"\n >\n <Page.Error />\n </Box>\n );\n }\n\n return (\n <Box\n height=\"100vh\"\n width=\"100vw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={2}\n background=\"neutral0\"\n >\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <PreviewPage />\n </DocumentRBAC>\n )}\n </Page.Protect>\n </Box>\n );\n};\n\nconst ProtectedPreviewPage = () => {\n return (\n <Portal>\n <FocusTrap>\n <ProtectedPreviewPageImpl />\n </FocusTrap>\n </Portal>\n );\n};\n\nexport { ProtectedPreviewPage, usePreviewContext };\n"],"names":["useIntl","jsx","Box","useQueryParams","useHistory","stringify","IconButton","Link","Cross","getDocumentStatus","DocumentStatus","Fragment","Tabs","jsxs","useNotification","useClipboard","Grid","LinkIcon","styled","Typography","createContext","useParams","React","buildValidParams","COLLECTION_TYPES","useGetPreviewUrlQuery","useDocument","useDocumentLayout","Page","Flex","useRBAC","permissions","DocumentRBAC","Portal","FocusTrap"],"mappings":"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"}
@@ -11,13 +11,12 @@ const reactIntl = require("react-intl");
11
11
  const reactRouterDom = require("react-router-dom");
12
12
  const reactWindow = require("react-window");
13
13
  const styledComponents = require("styled-components");
14
- const index = require("./index-DcA8_tJw.js");
15
- const useDragAndDrop = require("./useDragAndDrop-J0TUUbR6.js");
16
- const relations = require("./relations-Z6RA1sBS.js");
14
+ const index = require("./index-Ca7YWlAA.js");
15
+ const useDragAndDrop = require("./useDragAndDrop-BMtgCYzL.js");
16
+ const relations = require("./relations-C9Usz9k5.js");
17
17
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
18
18
  function _interopNamespace(e) {
19
- if (e && e.__esModule)
20
- return e;
19
+ if (e && e.__esModule) return e;
21
20
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
22
21
  if (e) {
23
22
  for (const k in e) {
@@ -55,7 +54,14 @@ function useHandleDisconnect(fieldName, consumerName) {
55
54
  return;
56
55
  }
57
56
  }
58
- addFieldRow(`${fieldName}.disconnect`, { id: relation.id, documentId: relation.documentId });
57
+ addFieldRow(`${fieldName}.disconnect`, {
58
+ id: relation.id,
59
+ apiData: {
60
+ id: relation.id,
61
+ documentId: relation.documentId,
62
+ locale: relation.locale
63
+ }
64
+ });
59
65
  };
60
66
  return handleDisconnect;
61
67
  }
@@ -71,9 +77,16 @@ const RelationsField = React__namespace.forwardRef(
71
77
  const params = index.buildValidParams(query);
72
78
  const isMorph = props.attribute.relation.toLowerCase().includes("morph");
73
79
  const isDisabled = isMorph || disabled;
74
- const { id: componentId, uid } = useComponent("RelationsField", ({ uid: uid2, id: id2 }) => ({ id: id2, uid: uid2 }));
80
+ const { componentId, componentUID } = useComponent("RelationsField", ({ uid, id: id2 }) => ({
81
+ componentId: id2,
82
+ componentUID: uid
83
+ }));
84
+ const isSubmitting = strapiAdmin.useForm("RelationsList", (state) => state.isSubmitting);
85
+ React__namespace.useEffect(() => {
86
+ setCurrentPage(1);
87
+ }, [isSubmitting]);
75
88
  const id = componentId ? componentId.toString() : documentId;
76
- const model = uid ?? documentModel;
89
+ const model = componentUID ?? documentModel;
77
90
  const [targetField] = props.name.split(".").slice(-1);
78
91
  const { data, isLoading, isFetching } = relations.useGetRelationsQuery(
79
92
  {
@@ -126,10 +139,8 @@ const RelationsField = React__namespace.forwardRef(
126
139
  );
127
140
  const transformedRels = transformations([...data.results]);
128
141
  return [...transformedRels, ...field.value?.connect ?? []].sort((a, b) => {
129
- if (a.__temp_key__ < b.__temp_key__)
130
- return -1;
131
- if (a.__temp_key__ > b.__temp_key__)
132
- return 1;
142
+ if (a.__temp_key__ < b.__temp_key__) return -1;
143
+ if (a.__temp_key__ > b.__temp_key__) return 1;
133
144
  return 0;
134
145
  });
135
146
  }, [
@@ -144,7 +155,11 @@ const RelationsField = React__namespace.forwardRef(
144
155
  const [lastItemInList] = relations$1.slice(-1);
145
156
  const item = {
146
157
  id: relation.id,
147
- documentId: relation.documentId,
158
+ apiData: {
159
+ id: relation.id,
160
+ documentId: relation.documentId,
161
+ locale: relation.locale
162
+ },
148
163
  status: relation.status,
149
164
  /**
150
165
  * If there's a last item, that's the first key we use to generate out next one.
@@ -154,7 +169,7 @@ const RelationsField = React__namespace.forwardRef(
154
169
  [props.mainField?.name ?? "documentId"]: relation[props.mainField?.name ?? "documentId"],
155
170
  label: relations.getRelationLabel(relation, props.mainField),
156
171
  // @ts-expect-error – targetModel does exist on the attribute, but it's not typed.
157
- href: `../${index.COLLECTION_TYPES}/${props.attribute.targetModel}/${relation.documentId}`
172
+ href: `../${index.COLLECTION_TYPES}/${props.attribute.targetModel}/${relation.documentId}?${relation.locale ? `plugins[i18n][locale]=${relation.locale}` : ""}`
158
173
  };
159
174
  if (ONE_WAY_RELATIONS.includes(props.attribute.relation)) {
160
175
  field.value?.connect?.forEach(handleDisconnect);
@@ -179,7 +194,7 @@ const RelationsField = React__namespace.forwardRef(
179
194
  RelationsInput,
180
195
  {
181
196
  disabled: isDisabled,
182
- id,
197
+ id: componentUID ? componentId ? `${componentId}` : "" : documentId,
183
198
  label: `${label} ${relationsCount > 0 ? `(${relationsCount})` : ""}`,
184
199
  model,
185
200
  onChange: handleConnect,
@@ -238,7 +253,7 @@ const addLabelAndHref = ({ mainField, href }) => (relations$1) => relations$1.ma
238
253
  // Fallback to `id` if there is no `mainField` value, which will overwrite the above `documentId` property with the exact same data.
239
254
  [mainField?.name ?? "documentId"]: relation[mainField?.name ?? "documentId"],
240
255
  label: relations.getRelationLabel(relation, mainField),
241
- href: `${href}/${relation.documentId}`
256
+ href: `${href}/${relation.documentId}?${relation.locale ? `plugins[i18n][locale]=${relation.locale}` : ""}`
242
257
  };
243
258
  });
244
259
  const RelationsInput = ({
@@ -440,17 +455,25 @@ const RelationsList = ({
440
455
  newData.splice(oldIndex, 1);
441
456
  newData.splice(newIndex, 0, { ...currentRow, __temp_key__: newKey });
442
457
  const connectedRelations = newData.reduce((acc, relation, currentIndex, array) => {
443
- const relationOnServer = serverData.find(
444
- (oldRelation) => oldRelation.documentId === relation.documentId
445
- );
458
+ const relationOnServer = serverData.find((oldRelation) => oldRelation.id === relation.id);
446
459
  const relationInFront = array[currentIndex + 1];
447
460
  if (!relationOnServer || relationOnServer.__temp_key__ !== relation.__temp_key__) {
448
461
  const position = relationInFront ? {
449
462
  before: relationInFront.documentId,
450
463
  locale: relationInFront.locale,
451
- status: relationInFront.status
464
+ status: "publishedAt" in relationInFront && relationInFront.publishedAt ? "published" : "draft"
452
465
  } : { end: true };
453
- const relationWithPosition = { ...relation, position };
466
+ const relationWithPosition = {
467
+ ...relation,
468
+ ...{
469
+ apiData: {
470
+ id: relation.id,
471
+ documentId: relation.documentId,
472
+ locale: relation.locale,
473
+ position
474
+ }
475
+ }
476
+ };
454
477
  return [...acc, relationWithPosition];
455
478
  }
456
479
  return acc;
@@ -582,7 +605,7 @@ const ListItem = ({ data, index: index$1, style }) => {
582
605
  relations: relations2
583
606
  } = data;
584
607
  const { formatMessage } = reactIntl.useIntl();
585
- const { href, documentId, label, status } = relations2[index$1];
608
+ const { href, id, label, status } = relations2[index$1];
586
609
  const [{ handlerId, isDragging, handleKeyDown }, relationRef, dropRef, dragRef, dragPreviewRef] = useDragAndDrop.useDragAndDrop(
587
610
  canDrag && !disabled,
588
611
  {
@@ -591,7 +614,7 @@ const ListItem = ({ data, index: index$1, style }) => {
591
614
  item: {
592
615
  displayedValue: label,
593
616
  status,
594
- id: documentId,
617
+ id,
595
618
  index: index$1
596
619
  },
597
620
  onMoveItem: handleMoveItem,
@@ -721,4 +744,4 @@ exports.FlexWrapper = FlexWrapper;
721
744
  exports.LinkEllipsis = LinkEllipsis;
722
745
  exports.MemoizedRelationsField = MemoizedRelationsField;
723
746
  exports.useComponent = useComponent;
724
- //# sourceMappingURL=Relations-BHXq_cKF.js.map
747
+ //# sourceMappingURL=Relations-CTGM7Hv5.js.map