@strapi/content-manager 0.0.0-experimental.e0df4d50334a17a1beb3d203bff414fbbff62f7b → 0.0.0-experimental.e12978dcee698470990e9c5c63384faf2c307443

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 (120) hide show
  1. package/dist/admin/chunks/{ComponentConfigurationPage-C5H-5L1u.js → ComponentConfigurationPage-Ci3dN40b.js} +5 -6
  2. package/dist/admin/chunks/{ComponentConfigurationPage-C5H-5L1u.js.map → ComponentConfigurationPage-Ci3dN40b.js.map} +1 -1
  3. package/dist/admin/chunks/{ComponentConfigurationPage-BN2kOtDm.mjs → ComponentConfigurationPage-DFPdl9pm.mjs} +5 -6
  4. package/dist/admin/chunks/{ComponentConfigurationPage-BN2kOtDm.mjs.map → ComponentConfigurationPage-DFPdl9pm.mjs.map} +1 -1
  5. package/dist/admin/chunks/{EditConfigurationPage-BExtZuB7.js → EditConfigurationPage-7xe8u-Pp.js} +5 -6
  6. package/dist/admin/chunks/{EditConfigurationPage-BExtZuB7.js.map → EditConfigurationPage-7xe8u-Pp.js.map} +1 -1
  7. package/dist/admin/chunks/{EditConfigurationPage-tMgOELQG.mjs → EditConfigurationPage-BFse-urJ.mjs} +5 -6
  8. package/dist/admin/chunks/{EditConfigurationPage-tMgOELQG.mjs.map → EditConfigurationPage-BFse-urJ.mjs.map} +1 -1
  9. package/dist/admin/chunks/{EditViewPage-CYe7wAXF.mjs → EditViewPage-BNpRr7fZ.mjs} +99 -98
  10. package/dist/admin/chunks/EditViewPage-BNpRr7fZ.mjs.map +1 -0
  11. package/dist/admin/chunks/{EditViewPage-DFkloeMZ.js → EditViewPage-CwYSs8Cq.js} +99 -98
  12. package/dist/admin/chunks/EditViewPage-CwYSs8Cq.js.map +1 -0
  13. package/dist/admin/chunks/{Form-DTO0ZIaB.mjs → Form-D9Ee-exF.mjs} +3 -3
  14. package/dist/admin/chunks/{Form-DTO0ZIaB.mjs.map → Form-D9Ee-exF.mjs.map} +1 -1
  15. package/dist/admin/chunks/{Form-DGUP3zQO.js → Form-DDbxreII.js} +5 -5
  16. package/dist/admin/chunks/{Form-DGUP3zQO.js.map → Form-DDbxreII.js.map} +1 -1
  17. package/dist/admin/chunks/{History-CQznK1pG.js → History-D5joC76n.js} +17 -13
  18. package/dist/admin/chunks/History-D5joC76n.js.map +1 -0
  19. package/dist/admin/chunks/{History-C333pgXF.mjs → History-FuD7Tp5I.mjs} +16 -12
  20. package/dist/admin/chunks/History-FuD7Tp5I.mjs.map +1 -0
  21. package/dist/admin/chunks/{Input-BexkC_pp.mjs → Input-BHucdqva.mjs} +1108 -47
  22. package/dist/admin/chunks/Input-BHucdqva.mjs.map +1 -0
  23. package/dist/admin/chunks/{Input-DLJZHw9Y.js → Input-BJCenRYN.js} +1121 -57
  24. package/dist/admin/chunks/Input-BJCenRYN.js.map +1 -0
  25. package/dist/admin/chunks/{ListConfigurationPage-BX2WR7MI.mjs → ListConfigurationPage-3kSfz9xV.mjs} +4 -5
  26. package/dist/admin/chunks/{ListConfigurationPage-BX2WR7MI.mjs.map → ListConfigurationPage-3kSfz9xV.mjs.map} +1 -1
  27. package/dist/admin/chunks/{ListConfigurationPage-71I_stAM.js → ListConfigurationPage-CgJEcEkD.js} +6 -7
  28. package/dist/admin/chunks/{ListConfigurationPage-71I_stAM.js.map → ListConfigurationPage-CgJEcEkD.js.map} +1 -1
  29. package/dist/admin/chunks/{ListViewPage-DV3heO4F.js → ListViewPage-CvQ1w8IW.js} +7 -8
  30. package/dist/admin/chunks/{ListViewPage-DV3heO4F.js.map → ListViewPage-CvQ1w8IW.js.map} +1 -1
  31. package/dist/admin/chunks/{ListViewPage-BDeT3Dkk.mjs → ListViewPage-DPUYRHss.mjs} +3 -4
  32. package/dist/admin/chunks/{ListViewPage-BDeT3Dkk.mjs.map → ListViewPage-DPUYRHss.mjs.map} +1 -1
  33. package/dist/admin/chunks/{NoContentTypePage-9JHYpYVX.mjs → NoContentTypePage-BRLLtjLb.mjs} +2 -2
  34. package/dist/admin/chunks/{NoContentTypePage-9JHYpYVX.mjs.map → NoContentTypePage-BRLLtjLb.mjs.map} +1 -1
  35. package/dist/admin/chunks/{NoContentTypePage-COih9y2J.js → NoContentTypePage-C5Vut1Af.js} +2 -2
  36. package/dist/admin/chunks/{NoContentTypePage-COih9y2J.js.map → NoContentTypePage-C5Vut1Af.js.map} +1 -1
  37. package/dist/admin/chunks/{NoPermissionsPage-DTe9I47q.mjs → NoPermissionsPage-B5HJbcjm.mjs} +2 -2
  38. package/dist/admin/chunks/{NoPermissionsPage-DTe9I47q.mjs.map → NoPermissionsPage-B5HJbcjm.mjs.map} +1 -1
  39. package/dist/admin/chunks/{NoPermissionsPage-DGAwRIlN.js → NoPermissionsPage-BBXnpc7M.js} +2 -2
  40. package/dist/admin/chunks/{NoPermissionsPage-DGAwRIlN.js.map → NoPermissionsPage-BBXnpc7M.js.map} +1 -1
  41. package/dist/admin/chunks/{Preview-BEq0FXda.mjs → Preview-C3lnOgQx.mjs} +244 -116
  42. package/dist/admin/chunks/Preview-C3lnOgQx.mjs.map +1 -0
  43. package/dist/admin/chunks/{Preview-CXtc9yEV.js → Preview-DB7ZGawL.js} +240 -112
  44. package/dist/admin/chunks/Preview-DB7ZGawL.js.map +1 -0
  45. package/dist/admin/chunks/{en-C1CjdAtC.js → en-CH__IC8g.js} +4 -1
  46. package/dist/admin/chunks/{en-C1CjdAtC.js.map → en-CH__IC8g.js.map} +1 -1
  47. package/dist/admin/chunks/{en-LfhocNG2.mjs → en-DBP0Gaid.mjs} +4 -1
  48. package/dist/admin/chunks/{en-LfhocNG2.mjs.map → en-DBP0Gaid.mjs.map} +1 -1
  49. package/dist/admin/chunks/{index-Cs6qwFQu.mjs → index-DYrCidCq.mjs} +225 -140
  50. package/dist/admin/chunks/index-DYrCidCq.mjs.map +1 -0
  51. package/dist/admin/chunks/{index-BHimg6jW.js → index-DoUQnFTk.js} +227 -138
  52. package/dist/admin/chunks/index-DoUQnFTk.js.map +1 -0
  53. package/dist/admin/chunks/{layout-Dtahn4Ue.js → layout-CqndYVtU.js} +86 -13
  54. package/dist/admin/chunks/layout-CqndYVtU.js.map +1 -0
  55. package/dist/admin/chunks/{layout-DStNia_P.mjs → layout-D2NJmgCw.mjs} +78 -5
  56. package/dist/admin/chunks/layout-D2NJmgCw.mjs.map +1 -0
  57. package/dist/admin/chunks/{useDragAndDrop-gcqEJMnO.js → objects-BJTP843m.js} +73 -1
  58. package/dist/admin/chunks/objects-BJTP843m.js.map +1 -0
  59. package/dist/admin/chunks/{useDragAndDrop-HYwNDExe.mjs → objects-D2z-IJgu.mjs} +72 -2
  60. package/dist/admin/chunks/objects-D2z-IJgu.mjs.map +1 -0
  61. package/dist/admin/chunks/uk-BtM6WnaE.mjs +313 -0
  62. package/dist/admin/chunks/uk-BtM6WnaE.mjs.map +1 -0
  63. package/dist/admin/chunks/uk-DB6OgySY.js +318 -0
  64. package/dist/admin/chunks/uk-DB6OgySY.js.map +1 -0
  65. package/dist/admin/chunks/{relations-XOYEEqMz.js → usePrev-Cm_0-qRC.js} +18 -2
  66. package/dist/admin/chunks/usePrev-Cm_0-qRC.js.map +1 -0
  67. package/dist/admin/chunks/{relations-Cq8NRUto.mjs → usePrev-DinC2aha.mjs} +18 -4
  68. package/dist/admin/chunks/usePrev-DinC2aha.mjs.map +1 -0
  69. package/dist/admin/index.js +1 -1
  70. package/dist/admin/index.mjs +1 -1
  71. package/dist/admin/src/components/InjectionZone.d.ts +7 -1
  72. package/dist/admin/src/content-manager.d.ts +4 -0
  73. package/dist/admin/src/features/DocumentContext.d.ts +48 -0
  74. package/dist/admin/src/features/DocumentRBAC.d.ts +3 -2
  75. package/dist/admin/src/hooks/useDocument.d.ts +2 -0
  76. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
  77. package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +2 -1
  78. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +7 -0
  79. package/dist/admin/src/pages/EditView/components/FormInputs/{Relations.d.ts → Relations/Relations.d.ts} +9 -4
  80. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +5 -2
  81. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +3 -3
  82. package/dist/admin/src/preview/components/PreviewContent.d.ts +1 -2
  83. package/dist/admin/src/preview/pages/Preview.d.ts +2 -0
  84. package/dist/server/index.js +1 -1
  85. package/dist/server/index.js.map +1 -1
  86. package/dist/server/index.mjs +1 -1
  87. package/dist/server/index.mjs.map +1 -1
  88. package/package.json +8 -8
  89. package/dist/admin/chunks/EditViewPage-CYe7wAXF.mjs.map +0 -1
  90. package/dist/admin/chunks/EditViewPage-DFkloeMZ.js.map +0 -1
  91. package/dist/admin/chunks/History-C333pgXF.mjs.map +0 -1
  92. package/dist/admin/chunks/History-CQznK1pG.js.map +0 -1
  93. package/dist/admin/chunks/Input-BexkC_pp.mjs.map +0 -1
  94. package/dist/admin/chunks/Input-DLJZHw9Y.js.map +0 -1
  95. package/dist/admin/chunks/Preview-BEq0FXda.mjs.map +0 -1
  96. package/dist/admin/chunks/Preview-CXtc9yEV.js.map +0 -1
  97. package/dist/admin/chunks/Relations-o7_hVGyK.js +0 -1318
  98. package/dist/admin/chunks/Relations-o7_hVGyK.js.map +0 -1
  99. package/dist/admin/chunks/Relations-qeZyLDgQ.mjs +0 -1291
  100. package/dist/admin/chunks/Relations-qeZyLDgQ.mjs.map +0 -1
  101. package/dist/admin/chunks/index-BHimg6jW.js.map +0 -1
  102. package/dist/admin/chunks/index-Cs6qwFQu.mjs.map +0 -1
  103. package/dist/admin/chunks/layout-DStNia_P.mjs.map +0 -1
  104. package/dist/admin/chunks/layout-Dtahn4Ue.js.map +0 -1
  105. package/dist/admin/chunks/objects-C3EebVVe.js +0 -76
  106. package/dist/admin/chunks/objects-C3EebVVe.js.map +0 -1
  107. package/dist/admin/chunks/objects-wl73iEma.mjs +0 -73
  108. package/dist/admin/chunks/objects-wl73iEma.mjs.map +0 -1
  109. package/dist/admin/chunks/relations-Cq8NRUto.mjs.map +0 -1
  110. package/dist/admin/chunks/relations-XOYEEqMz.js.map +0 -1
  111. package/dist/admin/chunks/uk-B24MoTVg.js +0 -145
  112. package/dist/admin/chunks/uk-B24MoTVg.js.map +0 -1
  113. package/dist/admin/chunks/uk-Cpgmm7gE.mjs +0 -140
  114. package/dist/admin/chunks/uk-Cpgmm7gE.mjs.map +0 -1
  115. package/dist/admin/chunks/useDragAndDrop-HYwNDExe.mjs.map +0 -1
  116. package/dist/admin/chunks/useDragAndDrop-gcqEJMnO.js.map +0 -1
  117. package/dist/admin/chunks/usePrev-Bjw2dhmq.mjs +0 -18
  118. package/dist/admin/chunks/usePrev-Bjw2dhmq.mjs.map +0 -1
  119. package/dist/admin/chunks/usePrev-DIYl-IAL.js +0 -21
  120. package/dist/admin/chunks/usePrev-DIYl-IAL.js.map +0 -1
@@ -4,14 +4,14 @@ var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
5
  var strapiAdmin = require('@strapi/admin/strapi-admin');
6
6
  var designSystem = require('@strapi/design-system');
7
+ var Icons = require('@strapi/icons');
7
8
  var reactIntl = require('react-intl');
8
9
  var reactRouterDom = require('react-router-dom');
9
- var index = require('./index-BHimg6jW.js');
10
- var Input = require('./Input-DLJZHw9Y.js');
11
- var Icons = require('@strapi/icons');
12
- var qs = require('qs');
13
10
  var styledComponents = require('styled-components');
14
- var EditViewPage = require('./EditViewPage-DFkloeMZ.js');
11
+ var index = require('./index-DoUQnFTk.js');
12
+ var Input = require('./Input-BJCenRYN.js');
13
+ var qs = require('qs');
14
+ var EditViewPage = require('./EditViewPage-CwYSs8Cq.js');
15
15
  require('lodash/fp/mapValues');
16
16
  require('yup');
17
17
  require('fractional-indexing');
@@ -72,19 +72,16 @@ require('prismjs/components/prism-typescript');
72
72
  require('prismjs/components/prism-tsx');
73
73
  require('prismjs/components/prism-vbnet');
74
74
  require('prismjs/components/prism-yaml');
75
- require('./usePrev-DIYl-IAL.js');
76
- require('./useDragAndDrop-gcqEJMnO.js');
75
+ require('./usePrev-Cm_0-qRC.js');
76
+ require('./objects-BJTP843m.js');
77
77
  require('react-dnd');
78
- require('@radix-ui/react-toolbar');
79
- require('react-dnd-html5-backend');
80
- require('./objects-C3EebVVe.js');
81
78
  require('lodash/clone');
82
79
  require('lodash/toPath');
83
- require('./Relations-o7_hVGyK.js');
84
- require('react-window');
85
- require('./relations-XOYEEqMz.js');
80
+ require('@radix-ui/react-toolbar');
81
+ require('react-dnd-html5-backend');
86
82
  require('./ComponentIcon-C-EjOUPA.js');
87
83
  require('@strapi/icons/symbols');
84
+ require('react-window');
88
85
  require('codemirror5');
89
86
  require('sanitize-html');
90
87
  require('highlight.js');
@@ -120,40 +117,6 @@ function _interopNamespaceDefault(e) {
120
117
 
121
118
  var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
122
119
 
123
- const UnstablePreviewContent = ()=>{
124
- const previewUrl = usePreviewContext('PreviewContent', (state)=>state.url);
125
- const layout = usePreviewContext('PreviewContent', (state)=>state.layout);
126
- const { formatMessage } = reactIntl.useIntl();
127
- return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
128
- flex: 1,
129
- overflow: "auto",
130
- alignItems: "stretch",
131
- children: [
132
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
133
- overflow: "auto",
134
- flex: 1,
135
- borderWidth: "0 1px 0 0",
136
- borderColor: "neutral150",
137
- padding: 6,
138
- children: /*#__PURE__*/ jsxRuntime.jsx(Input.FormLayout, {
139
- layout: layout.layout,
140
- hasBackground: true
141
- })
142
- }),
143
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
144
- src: previewUrl,
145
- title: formatMessage({
146
- id: 'content-manager.preview.panel.title',
147
- defaultMessage: 'Preview'
148
- }),
149
- flex: 1,
150
- height: "100%",
151
- borderWidth: 0,
152
- tag: "iframe"
153
- }, previewUrl)
154
- ]
155
- });
156
- };
157
120
  const PreviewContent = ()=>{
158
121
  const previewUrl = usePreviewContext('PreviewContent', (state)=>state.url);
159
122
  const { formatMessage } = reactIntl.useIntl();
@@ -250,42 +213,45 @@ const PreviewTabs = ()=>{
250
213
  if (!hasDraftAndPublish) {
251
214
  return null;
252
215
  }
253
- return /*#__PURE__*/ jsxRuntime.jsx(jsxRuntime.Fragment, {
254
- children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Tabs.Root, {
255
- variant: "simple",
256
- value: query.status || 'draft',
257
- onValueChange: handleTabChange,
258
- children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Tabs.List, {
259
- "aria-label": formatMessage({
260
- id: 'preview.tabs.label',
261
- defaultMessage: 'Document status'
216
+ return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Tabs.Root, {
217
+ variant: "simple",
218
+ value: query.status || 'draft',
219
+ onValueChange: handleTabChange,
220
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Tabs.List, {
221
+ "aria-label": formatMessage({
222
+ id: 'preview.tabs.label',
223
+ defaultMessage: 'Document status'
224
+ }),
225
+ children: [
226
+ /*#__PURE__*/ jsxRuntime.jsx(StatusTab, {
227
+ value: "draft",
228
+ children: formatMessage({
229
+ id: 'content-manager.containers.List.draft',
230
+ defaultMessage: 'draft'
231
+ })
262
232
  }),
263
- children: [
264
- /*#__PURE__*/ jsxRuntime.jsx(StatusTab, {
265
- value: "draft",
266
- children: formatMessage({
267
- id: 'content-manager.containers.List.draft',
268
- defaultMessage: 'draft'
269
- })
270
- }),
271
- /*#__PURE__*/ jsxRuntime.jsx(StatusTab, {
272
- value: "published",
273
- disabled: documentStatus === 'draft',
274
- children: formatMessage({
275
- id: 'content-manager.containers.List.published',
276
- defaultMessage: 'published'
277
- })
233
+ /*#__PURE__*/ jsxRuntime.jsx(StatusTab, {
234
+ value: "published",
235
+ disabled: documentStatus === 'draft',
236
+ children: formatMessage({
237
+ id: 'content-manager.containers.List.published',
238
+ defaultMessage: 'published'
278
239
  })
279
- ]
280
- })
240
+ })
241
+ ]
281
242
  })
282
243
  });
283
244
  };
284
245
  /* -------------------------------------------------------------------------------------------------
285
246
  * PreviewHeader
286
247
  * -----------------------------------------------------------------------------------------------*/ const UnstablePreviewHeader = ()=>{
287
- // Get the document title
288
248
  const title = usePreviewContext('PreviewHeader', (state)=>state.title);
249
+ const document = usePreviewContext('PreviewHeader', (state)=>state.document);
250
+ const schema = usePreviewContext('PreviewHeader', (state)=>state.schema);
251
+ const meta = usePreviewContext('PreviewHeader', (state)=>state.meta);
252
+ const plugins = strapiAdmin.useStrapiApp('PreviewHeader', (state)=>state.plugins);
253
+ const iframeRef = usePreviewContext('PreviewHeader', (state)=>state.iframeRef);
254
+ const [{ query }] = strapiAdmin.useQueryParams();
289
255
  const { formatMessage } = reactIntl.useIntl();
290
256
  const { toggleNotification } = strapiAdmin.useNotification();
291
257
  const { copy } = strapiAdmin.useClipboard();
@@ -299,7 +265,23 @@ const PreviewTabs = ()=>{
299
265
  type: 'success'
300
266
  });
301
267
  };
268
+ const hasDraftAndPublish = schema.options?.draftAndPublish ?? false;
269
+ const documentActionProps = {
270
+ activeTab: query.status ?? null,
271
+ collectionType: schema.kind === 'collectionType' ? 'collection-types' : 'single-types',
272
+ model: schema.uid,
273
+ documentId: document.documentId,
274
+ document,
275
+ meta,
276
+ onPreview: ()=>{
277
+ iframeRef?.current?.contentWindow?.postMessage({
278
+ type: 'strapiUpdate'
279
+ }, // The iframe origin is safe to use since it must be provided through the allowedOrigins config
280
+ new URL(iframeRef.current.src).origin);
281
+ }
282
+ };
302
283
  return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
284
+ height: "48px",
303
285
  gap: 4,
304
286
  background: "neutral0",
305
287
  borderColor: "neutral150",
@@ -327,17 +309,60 @@ const PreviewTabs = ()=>{
327
309
  /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
328
310
  flex: 1,
329
311
  paddingRight: 2,
330
- justifyContent: "space-between",
312
+ gap: 2,
313
+ justifyContent: hasDraftAndPublish ? 'space-between' : 'flex-end',
331
314
  children: [
332
- /*#__PURE__*/ jsxRuntime.jsx(PreviewTabs, {}),
333
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
334
- type: "button",
335
- label: formatMessage({
336
- id: 'preview.copy.label',
337
- defaultMessage: 'Copy preview link'
338
- }),
339
- onClick: handleCopyLink,
340
- children: /*#__PURE__*/ jsxRuntime.jsx(Icons.Link, {})
315
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
316
+ flex: "1 1 70%",
317
+ children: /*#__PURE__*/ jsxRuntime.jsx(PreviewTabs, {})
318
+ }),
319
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
320
+ gap: 2,
321
+ children: [
322
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
323
+ type: "button",
324
+ label: formatMessage({
325
+ id: 'preview.copy.label',
326
+ defaultMessage: 'Copy preview link'
327
+ }),
328
+ onClick: handleCopyLink,
329
+ children: /*#__PURE__*/ jsxRuntime.jsx(Icons.Link, {})
330
+ }),
331
+ /*#__PURE__*/ jsxRuntime.jsx(index.InjectionZone, {
332
+ area: "preview.actions"
333
+ }),
334
+ /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.DescriptionComponentRenderer, {
335
+ props: documentActionProps,
336
+ descriptions: plugins['content-manager'].apis.getDocumentActions('preview'),
337
+ children: (actions)=>{
338
+ const filteredActions = actions.filter((action)=>[
339
+ action.position
340
+ ].flat().includes('preview'));
341
+ const [primaryAction, secondaryAction] = filteredActions;
342
+ if (!primaryAction && !secondaryAction) return null;
343
+ // Both actions are available when draft and publish enabled
344
+ if (primaryAction && secondaryAction) {
345
+ return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
346
+ children: [
347
+ /*#__PURE__*/ jsxRuntime.jsx(index.DocumentActionButton, {
348
+ ...secondaryAction,
349
+ variant: secondaryAction.variant || 'secondary'
350
+ }),
351
+ /*#__PURE__*/ jsxRuntime.jsx(index.DocumentActionButton, {
352
+ ...primaryAction,
353
+ variant: primaryAction.variant || 'default'
354
+ })
355
+ ]
356
+ });
357
+ }
358
+ // Otherwise we just have the save action
359
+ return /*#__PURE__*/ jsxRuntime.jsx(index.DocumentActionButton, {
360
+ ...primaryAction,
361
+ variant: primaryAction.variant || 'secondary'
362
+ });
363
+ }
364
+ })
365
+ ]
341
366
  })
342
367
  ]
343
368
  })
@@ -427,8 +452,16 @@ const TitleContainer = styledComponents.styled(designSystem.Flex)`
427
452
  const [PreviewProvider, usePreviewContext] = strapiAdmin.createContext('PreviewPage');
428
453
  /* -------------------------------------------------------------------------------------------------
429
454
  * PreviewPage
430
- * -----------------------------------------------------------------------------------------------*/ const PreviewPage = ()=>{
455
+ * -----------------------------------------------------------------------------------------------*/ const AnimatedArrow = styledComponents.styled(Icons.ArrowLineLeft)`
456
+ will-change: transform;
457
+ rotate: ${(props)=>props.isSideEditorOpen ? '0deg' : '180deg'};
458
+ transition: rotate 0.2s ease-in-out;
459
+ `;
460
+ const PreviewPage = ()=>{
461
+ const location = reactRouterDom.useLocation();
431
462
  const { formatMessage } = reactIntl.useIntl();
463
+ const iframeRef = React__namespace.useRef(null);
464
+ const [isSideEditorOpen, setIsSideEditorOpen] = React__namespace.useState(true);
432
465
  // Read all the necessary data from the URL to find the right preview URL
433
466
  const { slug: model, id: documentId, collectionType } = reactRouterDom.useParams();
434
467
  const [{ query }] = strapiAdmin.useQueryParams();
@@ -462,16 +495,28 @@ const [PreviewProvider, usePreviewContext] = strapiAdmin.createContext('PreviewP
462
495
  params
463
496
  });
464
497
  const documentLayoutResponse = index.useDocumentLayout(model);
465
- if (documentResponse.isLoading || previewUrlResponse.isLoading || documentLayoutResponse.isLoading) {
498
+ const isLoading = previewUrlResponse.isLoading || documentLayoutResponse.isLoading || documentResponse.isLoading;
499
+ if (isLoading && !documentResponse.document?.documentId) {
466
500
  return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
467
501
  }
468
- if (previewUrlResponse.error || documentLayoutResponse.error || !documentResponse.document || !documentResponse.meta || !documentResponse.schema) {
502
+ const initialValues = documentResponse.getInitialFormValues();
503
+ if (previewUrlResponse.error || documentLayoutResponse.error || !documentResponse.document || !documentResponse.meta || !documentResponse.schema || !initialValues) {
469
504
  return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Error, {});
470
505
  }
471
506
  if (!previewUrlResponse.data?.data?.url) {
472
507
  return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.NoData, {});
473
508
  }
474
509
  const documentTitle = documentResponse.getTitle(documentLayoutResponse.edit.settings.mainField);
510
+ const validateSync = (values, options)=>{
511
+ const yupSchema = index.createYupSchema(documentResponse.schema?.attributes, documentResponse.components, {
512
+ status: documentResponse.document?.status,
513
+ ...options
514
+ });
515
+ return yupSchema.validateSync(values, {
516
+ abortEarly: false
517
+ });
518
+ };
519
+ const previewUrl = previewUrlResponse.data.data.url;
475
520
  return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
476
521
  children: [
477
522
  /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Title, {
@@ -482,31 +527,110 @@ const [PreviewProvider, usePreviewContext] = strapiAdmin.createContext('PreviewP
482
527
  contentType: documentTitle
483
528
  })
484
529
  }),
485
- /*#__PURE__*/ jsxRuntime.jsx(PreviewProvider, {
486
- url: previewUrlResponse.data.data.url,
487
- document: documentResponse.document,
488
- title: documentTitle,
489
- meta: documentResponse.meta,
490
- schema: documentResponse.schema,
491
- layout: documentLayoutResponse.edit,
492
- children: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Form, {
493
- method: "POST",
494
- initialValues: documentResponse.document,
495
- height: "100%",
496
- children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
497
- direction: "column",
530
+ /*#__PURE__*/ jsxRuntime.jsx(index.DocumentContextProvider, {
531
+ initialDocument: {
532
+ documentId: documentId || '',
533
+ model,
534
+ collectionType
535
+ },
536
+ children: /*#__PURE__*/ jsxRuntime.jsx(PreviewProvider, {
537
+ url: previewUrl,
538
+ document: documentResponse.document,
539
+ title: documentTitle,
540
+ meta: documentResponse.meta,
541
+ schema: documentResponse.schema,
542
+ layout: documentLayoutResponse.edit,
543
+ iframeRef: iframeRef,
544
+ children: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Form, {
545
+ method: "PUT",
546
+ disabled: query.status === 'published' && documentResponse && documentResponse.document.status === 'published',
547
+ initialValues: documentResponse.getInitialFormValues(),
548
+ initialErrors: location?.state?.forceValidation ? validateSync(initialValues, {}) : {},
498
549
  height: "100%",
499
- alignItems: "stretch",
500
- children: window.strapi.future.isEnabled('unstablePreviewSideEditor') ? /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
501
- children: [
502
- /*#__PURE__*/ jsxRuntime.jsx(UnstablePreviewHeader, {}),
503
- /*#__PURE__*/ jsxRuntime.jsx(UnstablePreviewContent, {})
504
- ]
505
- }) : /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
506
- children: [
507
- /*#__PURE__*/ jsxRuntime.jsx(PreviewHeader, {}),
508
- /*#__PURE__*/ jsxRuntime.jsx(PreviewContent, {})
509
- ]
550
+ validate: (values, options)=>{
551
+ const yupSchema = index.createYupSchema(documentResponse.schema?.attributes, documentResponse.components, {
552
+ status: documentResponse.document?.status,
553
+ ...options
554
+ });
555
+ return yupSchema.validate(values, {
556
+ abortEarly: false
557
+ });
558
+ },
559
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
560
+ direction: "column",
561
+ height: "100%",
562
+ alignItems: "stretch",
563
+ children: window.strapi.future.isEnabled('unstablePreviewSideEditor') ? /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
564
+ children: [
565
+ /*#__PURE__*/ jsxRuntime.jsx(UnstablePreviewHeader, {}),
566
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
567
+ flex: 1,
568
+ overflow: "auto",
569
+ alignItems: "stretch",
570
+ children: [
571
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
572
+ overflow: "auto",
573
+ width: isSideEditorOpen ? '50%' : 0,
574
+ borderWidth: "0 1px 0 0",
575
+ borderColor: "neutral150",
576
+ paddingTop: 6,
577
+ paddingBottom: 6,
578
+ // Remove horizontal padding when the editor is closed or it won't fully disappear
579
+ paddingLeft: isSideEditorOpen ? 6 : 0,
580
+ paddingRight: isSideEditorOpen ? 6 : 0,
581
+ transition: "all 0.2s ease-in-out",
582
+ children: /*#__PURE__*/ jsxRuntime.jsx(Input.FormLayout, {
583
+ layout: documentLayoutResponse.edit.layout,
584
+ hasBackground: true
585
+ })
586
+ }),
587
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Box, {
588
+ position: "relative",
589
+ flex: 1,
590
+ height: "100%",
591
+ overflow: "hidden",
592
+ children: [
593
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
594
+ "data-testid": "preview-iframe",
595
+ ref: iframeRef,
596
+ src: previewUrl,
597
+ title: formatMessage({
598
+ id: 'content-manager.preview.panel.title',
599
+ defaultMessage: 'Preview'
600
+ }),
601
+ width: "100%",
602
+ height: "100%",
603
+ borderWidth: 0,
604
+ tag: "iframe"
605
+ }, previewUrl),
606
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
607
+ variant: "tertiary",
608
+ label: formatMessage(isSideEditorOpen ? {
609
+ id: 'content-manager.preview.content.close-editor',
610
+ defaultMessage: 'Close editor'
611
+ } : {
612
+ id: 'content-manager.preview.content.open-editor',
613
+ defaultMessage: 'Open editor'
614
+ }),
615
+ onClick: ()=>setIsSideEditorOpen((prev)=>!prev),
616
+ position: "absolute",
617
+ top: 2,
618
+ left: 2,
619
+ children: /*#__PURE__*/ jsxRuntime.jsx(AnimatedArrow, {
620
+ isSideEditorOpen: isSideEditorOpen
621
+ })
622
+ })
623
+ ]
624
+ })
625
+ ]
626
+ })
627
+ ]
628
+ }) : /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
629
+ children: [
630
+ /*#__PURE__*/ jsxRuntime.jsx(PreviewHeader, {}),
631
+ /*#__PURE__*/ jsxRuntime.jsx(PreviewContent, {})
632
+ ]
633
+ })
510
634
  })
511
635
  })
512
636
  })
@@ -526,6 +650,10 @@ const [PreviewProvider, usePreviewContext] = strapiAdmin.createContext('PreviewP
526
650
  {
527
651
  action: 'plugin::content-manager.explorer.update',
528
652
  subject: model
653
+ },
654
+ {
655
+ action: 'plugin::content-manager.explorer.publish',
656
+ subject: model
529
657
  }
530
658
  ]);
531
659
  if (isLoading) {
@@ -570,4 +698,4 @@ const ProtectedPreviewPage = ()=>{
570
698
 
571
699
  exports.ProtectedPreviewPage = ProtectedPreviewPage;
572
700
  exports.usePreviewContext = usePreviewContext;
573
- //# sourceMappingURL=Preview-CXtc9yEV.js.map
701
+ //# sourceMappingURL=Preview-DB7ZGawL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Preview-DB7ZGawL.js","sources":["../../../admin/src/preview/components/PreviewContent.tsx","../../../admin/src/preview/components/PreviewHeader.tsx","../../../admin/src/preview/pages/Preview.tsx"],"sourcesContent":["import { 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 DescriptionComponentRenderer,\n useClipboard,\n useHistory,\n useNotification,\n useQueryParams,\n useStrapiApp,\n} from '@strapi/admin/strapi-admin';\nimport { IconButton, Tabs, Typography, Grid, Flex } 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 { InjectionZone } from '../../components/InjectionZone';\nimport { DocumentActionButton } from '../../pages/EditView/components/DocumentActions';\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport { getDocumentStatus } from '../../pages/EditView/EditViewPage';\nimport { usePreviewContext } from '../pages/Preview';\n\nimport type { ContentManagerPlugin, DocumentActionProps } from '../../content-manager';\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 variant=\"ghost\"\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 <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 * PreviewHeader\n * -----------------------------------------------------------------------------------------------*/\n\nconst UnstablePreviewHeader = () => {\n const title = usePreviewContext('PreviewHeader', (state) => state.title);\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 plugins = useStrapiApp('PreviewHeader', (state) => state.plugins);\n const iframeRef = usePreviewContext('PreviewHeader', (state) => state.iframeRef);\n\n const [{ query }] = useQueryParams<{\n status?: 'draft' | 'published';\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 const hasDraftAndPublish = schema.options?.draftAndPublish ?? false;\n const documentActionProps = {\n activeTab: query.status ?? null,\n collectionType: schema.kind === 'collectionType' ? 'collection-types' : 'single-types',\n model: schema.uid,\n documentId: document.documentId,\n document,\n meta,\n onPreview: () => {\n iframeRef?.current?.contentWindow?.postMessage(\n { type: 'strapiUpdate' },\n // The iframe origin is safe to use since it must be provided through the allowedOrigins config\n new URL(iframeRef.current.src).origin\n );\n },\n } satisfies DocumentActionProps;\n\n return (\n <Flex height=\"48px\" gap={4} background=\"neutral0\" borderColor=\"neutral150\" tag=\"header\">\n {/* Title and status */}\n <TitleContainer height=\"100%\" paddingLeft={2} paddingRight={4}>\n <ClosePreviewButton />\n <PreviewTitle\n tag=\"h1\"\n title={title}\n maxWidth=\"200px\"\n fontSize={2}\n paddingLeft={2}\n paddingRight={3}\n fontWeight={600}\n >\n {title}\n </PreviewTitle>\n <Status />\n </TitleContainer>\n\n {/* Tabs and actions */}\n <Flex\n flex={1}\n paddingRight={2}\n gap={2}\n justifyContent={hasDraftAndPublish ? 'space-between' : 'flex-end'}\n >\n <Flex flex=\"1 1 70%\">\n <PreviewTabs />\n </Flex>\n <Flex gap={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 <InjectionZone area=\"preview.actions\" />\n <DescriptionComponentRenderer\n props={documentActionProps}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('preview')}\n >\n {(actions) => {\n const filteredActions = actions.filter((action) =>\n [action.position].flat().includes('preview')\n );\n const [primaryAction, secondaryAction] = filteredActions;\n\n if (!primaryAction && !secondaryAction) return null;\n\n // Both actions are available when draft and publish enabled\n if (primaryAction && secondaryAction) {\n return (\n <>\n {/* Save */}\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n {/* Publish */}\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'default'}\n />\n </>\n );\n }\n\n // Otherwise we just have the save action\n return (\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'secondary'}\n />\n );\n }}\n </DescriptionComponentRenderer>\n </Flex>\n </Flex>\n </Flex>\n );\n};\n\nconst PreviewHeader = () => {\n // Get the document title\n const title = usePreviewContext('PreviewHeader', (state) => state.title);\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={title}>\n {title}\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\nconst TitleContainer = styled(Flex)`\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nexport { PreviewHeader, UnstablePreviewHeader };\n","import * as React from 'react';\n\nimport {\n Page,\n useQueryParams,\n useRBAC,\n createContext,\n Form as FormContext,\n} from '@strapi/admin/strapi-admin';\nimport { Box, Flex, FocusTrap, IconButton, Portal } from '@strapi/design-system';\nimport { ArrowLineLeft } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { GetPreviewUrl } from '../../../../shared/contracts/preview';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { DocumentContextProvider } from '../../features/DocumentContext';\nimport { DocumentRBAC } from '../../features/DocumentRBAC';\nimport { type UseDocument, useDocument } from '../../hooks/useDocument';\nimport { type EditLayout, useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { FormLayout } from '../../pages/EditView/components/FormLayout';\nimport { buildValidParams } from '../../utils/api';\nimport { createYupSchema } from '../../utils/validation';\nimport { PreviewContent } from '../components/PreviewContent';\nimport { PreviewHeader, UnstablePreviewHeader } 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 title: string;\n document: NonNullable<ReturnType<UseDocument>['document']>;\n meta: NonNullable<ReturnType<UseDocument>['meta']>;\n schema: NonNullable<ReturnType<UseDocument>['schema']>;\n layout: EditLayout;\n iframeRef?: React.RefObject<HTMLIFrameElement>;\n}\n\nconst [PreviewProvider, usePreviewContext] = createContext<PreviewContextValue>('PreviewPage');\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst AnimatedArrow = styled(ArrowLineLeft)<{ isSideEditorOpen: boolean }>`\n will-change: transform;\n rotate: ${(props) => (props.isSideEditorOpen ? '0deg' : '180deg')};\n transition: rotate 0.2s ease-in-out;\n`;\n\nconst PreviewPage = () => {\n const location = useLocation();\n const { formatMessage } = useIntl();\n\n const iframeRef = React.useRef<HTMLIFrameElement>(null);\n const [isSideEditorOpen, setIsSideEditorOpen] = React.useState(true);\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 status?: string;\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 const documentResponse = useDocument({\n model,\n collectionType,\n documentId,\n params,\n });\n const documentLayoutResponse = useDocumentLayout(model);\n\n const isLoading =\n previewUrlResponse.isLoading || documentLayoutResponse.isLoading || documentResponse.isLoading;\n if (isLoading && !documentResponse.document?.documentId) {\n return <Page.Loading />;\n }\n\n const initialValues = documentResponse.getInitialFormValues();\n\n if (\n previewUrlResponse.error ||\n documentLayoutResponse.error ||\n !documentResponse.document ||\n !documentResponse.meta ||\n !documentResponse.schema ||\n !initialValues\n ) {\n return <Page.Error />;\n }\n\n if (!previewUrlResponse.data?.data?.url) {\n return <Page.NoData />;\n }\n\n const documentTitle = documentResponse.getTitle(documentLayoutResponse.edit.settings.mainField);\n\n const validateSync = (values: Record<string, unknown>, options: Record<string, string>) => {\n const yupSchema = createYupSchema(\n documentResponse.schema?.attributes,\n documentResponse.components,\n {\n status: documentResponse.document?.status,\n ...options,\n }\n );\n\n return yupSchema.validateSync(values, { abortEarly: false });\n };\n\n const previewUrl = previewUrlResponse.data.data.url;\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: documentTitle,\n }\n )}\n </Page.Title>\n <DocumentContextProvider\n initialDocument={{\n documentId: documentId || '',\n model,\n collectionType,\n }}\n >\n <PreviewProvider\n url={previewUrl}\n document={documentResponse.document}\n title={documentTitle}\n meta={documentResponse.meta}\n schema={documentResponse.schema}\n layout={documentLayoutResponse.edit}\n iframeRef={iframeRef}\n >\n <FormContext\n method=\"PUT\"\n disabled={\n query.status === 'published' &&\n documentResponse &&\n documentResponse.document.status === 'published'\n }\n initialValues={documentResponse.getInitialFormValues()}\n initialErrors={location?.state?.forceValidation ? validateSync(initialValues, {}) : {}}\n height=\"100%\"\n validate={(values: Record<string, unknown>, options: Record<string, string>) => {\n const yupSchema = createYupSchema(\n documentResponse.schema?.attributes,\n documentResponse.components,\n {\n status: documentResponse.document?.status,\n ...options,\n }\n );\n\n return yupSchema.validate(values, { abortEarly: false });\n }}\n >\n <Flex direction=\"column\" height=\"100%\" alignItems=\"stretch\">\n {window.strapi.future.isEnabled('unstablePreviewSideEditor') ? (\n <>\n <UnstablePreviewHeader />\n <Flex flex={1} overflow=\"auto\" alignItems=\"stretch\">\n <Box\n overflow=\"auto\"\n width={isSideEditorOpen ? '50%' : 0}\n borderWidth=\"0 1px 0 0\"\n borderColor=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n // Remove horizontal padding when the editor is closed or it won't fully disappear\n paddingLeft={isSideEditorOpen ? 6 : 0}\n paddingRight={isSideEditorOpen ? 6 : 0}\n transition=\"all 0.2s ease-in-out\"\n >\n <FormLayout layout={documentLayoutResponse.edit.layout} hasBackground />\n </Box>\n <Box position=\"relative\" flex={1} height=\"100%\" overflow=\"hidden\">\n <Box\n data-testid=\"preview-iframe\"\n ref={iframeRef}\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 <IconButton\n variant=\"tertiary\"\n label={formatMessage(\n isSideEditorOpen\n ? {\n id: 'content-manager.preview.content.close-editor',\n defaultMessage: 'Close editor',\n }\n : {\n id: 'content-manager.preview.content.open-editor',\n defaultMessage: 'Open editor',\n }\n )}\n onClick={() => setIsSideEditorOpen((prev) => !prev)}\n position=\"absolute\"\n top={2}\n left={2}\n >\n <AnimatedArrow isSideEditorOpen={isSideEditorOpen} />\n </IconButton>\n </Box>\n </Flex>\n </>\n ) : (\n <>\n <PreviewHeader />\n <PreviewContent />\n </>\n )}\n </Flex>\n </FormContext>\n </PreviewProvider>\n </DocumentContextProvider>\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([\n { action: 'plugin::content-manager.explorer.read', subject: model },\n { action: 'plugin::content-manager.explorer.update', subject: model },\n { action: 'plugin::content-manager.explorer.publish', subject: model },\n ]);\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\n permissions={permissions.filter((permission) =>\n permission.action.includes('explorer.read')\n )}\n >\n <DocumentRBAC permissions={permissions}>\n <PreviewPage />\n </DocumentRBAC>\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":["PreviewContent","previewUrl","usePreviewContext","state","url","formatMessage","useIntl","_jsx","Box","src","title","id","defaultMessage","width","height","borderWidth","tag","ClosePreviewButton","query","useQueryParams","canGoBack","useHistory","goBack","history","locationIndex","currentLocationIndex","historyTo","at","undefined","fallback","pathname","search","stringify","encode","toWithFallback","handleClick","e","preventDefault","IconButton","variant","Link","relative","to","onClick","label","Cross","Status","document","schema","meta","hasDraftAndPublished","options","draftAndPublish","status","getDocumentStatus","DocumentStatus","size","PreviewTabs","setQuery","hasDraftAndPublish","documentStatus","handleTabChange","Tabs","Root","value","onValueChange","_jsxs","List","aria-label","StatusTab","disabled","UnstablePreviewHeader","plugins","useStrapiApp","iframeRef","toggleNotification","useNotification","copy","useClipboard","handleCopyLink","window","location","href","message","type","documentActionProps","activeTab","collectionType","kind","model","uid","documentId","onPreview","current","contentWindow","postMessage","URL","origin","Flex","gap","background","borderColor","TitleContainer","paddingLeft","paddingRight","PreviewTitle","maxWidth","fontSize","fontWeight","flex","justifyContent","LinkIcon","InjectionZone","area","DescriptionComponentRenderer","props","descriptions","apis","getDocumentActions","actions","filteredActions","filter","action","position","flat","includes","primaryAction","secondaryAction","_Fragment","DocumentActionButton","PreviewHeader","Grid","gridCols","Item","xs","paddingTop","paddingBottom","marginBottom","alignItems","margin","styled","Typography","Trigger","theme","colors","neutral150","PreviewProvider","createContext","AnimatedArrow","ArrowLineLeft","isSideEditorOpen","PreviewPage","useLocation","React","useRef","setIsSideEditorOpen","useState","slug","useParams","params","useMemo","buildValidParams","Error","COLLECTION_TYPES","previewUrlResponse","useGetPreviewUrlQuery","contentType","locale","documentResponse","useDocument","documentLayoutResponse","useDocumentLayout","isLoading","Page","Loading","initialValues","getInitialFormValues","error","data","NoData","documentTitle","getTitle","edit","settings","mainField","validateSync","values","yupSchema","createYupSchema","attributes","components","abortEarly","Title","DocumentContextProvider","initialDocument","layout","FormContext","method","initialErrors","forceValidation","validate","direction","strapi","future","isEnabled","overflow","transition","FormLayout","hasBackground","data-testid","ref","prev","top","left","ProtectedPreviewPageImpl","permissions","useRBAC","subject","zIndex","Protect","permission","DocumentRBAC","ProtectedPreviewPage","Portal","FocusTrap"],"mappings":"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"}
@@ -60,6 +60,7 @@ var en = {
60
60
  "components.LimitSelect.itemsPerPage": "Items per page",
61
61
  "components.NotAllowedInput.text": "No permissions to see this field",
62
62
  "components.RelationInput.icon-button-aria-label": "Drag",
63
+ "components.RelationInputModal.modal-title": "Edit a relation",
63
64
  "components.RepeatableComponent.error-message": "The component(s) contain error(s)",
64
65
  "components.Search.placeholder": "Search for an entry...",
65
66
  "components.Select.draft-info-title": "Draft",
@@ -249,6 +250,8 @@ var en = {
249
250
  "preview.copy.label": "Copy preview link",
250
251
  "preview.copy.success": "Copied preview link",
251
252
  "preview.tabs.label": "Preview status",
253
+ "preview.content.close-editor": "Close editor",
254
+ "preview.content.open-editor": "Open editor",
252
255
  "relation.add": "Add relation",
253
256
  "relation.disconnect": "Remove",
254
257
  "relation.error-adding-relation": "An error occurred while trying to add the relation.",
@@ -310,4 +313,4 @@ exports.default = en;
310
313
  exports.groups = groups;
311
314
  exports.models = models;
312
315
  exports.pageNotFound = pageNotFound;
313
- //# sourceMappingURL=en-C1CjdAtC.js.map
316
+ //# sourceMappingURL=en-CH__IC8g.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"en-C1CjdAtC.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"en-CH__IC8g.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -58,6 +58,7 @@ var en = {
58
58
  "components.LimitSelect.itemsPerPage": "Items per page",
59
59
  "components.NotAllowedInput.text": "No permissions to see this field",
60
60
  "components.RelationInput.icon-button-aria-label": "Drag",
61
+ "components.RelationInputModal.modal-title": "Edit a relation",
61
62
  "components.RepeatableComponent.error-message": "The component(s) contain error(s)",
62
63
  "components.Search.placeholder": "Search for an entry...",
63
64
  "components.Select.draft-info-title": "Draft",
@@ -247,6 +248,8 @@ var en = {
247
248
  "preview.copy.label": "Copy preview link",
248
249
  "preview.copy.success": "Copied preview link",
249
250
  "preview.tabs.label": "Preview status",
251
+ "preview.content.close-editor": "Close editor",
252
+ "preview.content.open-editor": "Open editor",
250
253
  "relation.add": "Add relation",
251
254
  "relation.disconnect": "Remove",
252
255
  "relation.error-adding-relation": "An error occurred while trying to add the relation.",
@@ -305,4 +308,4 @@ var en = {
305
308
  };
306
309
 
307
310
  export { en as default, groups, models, pageNotFound };
308
- //# sourceMappingURL=en-LfhocNG2.mjs.map
311
+ //# sourceMappingURL=en-DBP0Gaid.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"en-LfhocNG2.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"en-DBP0Gaid.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}