@strapi/content-manager 5.10.3 → 5.10.4

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 (81) hide show
  1. package/dist/admin/chunks/{ComponentConfigurationPage-C5H-5L1u.js → ComponentConfigurationPage-Cgjg4CQj.js} +3 -3
  2. package/dist/admin/chunks/{ComponentConfigurationPage-C5H-5L1u.js.map → ComponentConfigurationPage-Cgjg4CQj.js.map} +1 -1
  3. package/dist/admin/chunks/{ComponentConfigurationPage-BN2kOtDm.mjs → ComponentConfigurationPage-D6mjS3eX.mjs} +3 -3
  4. package/dist/admin/chunks/{ComponentConfigurationPage-BN2kOtDm.mjs.map → ComponentConfigurationPage-D6mjS3eX.mjs.map} +1 -1
  5. package/dist/admin/chunks/{EditConfigurationPage-BExtZuB7.js → EditConfigurationPage-C5E6D6NI.js} +3 -3
  6. package/dist/admin/chunks/{EditConfigurationPage-BExtZuB7.js.map → EditConfigurationPage-C5E6D6NI.js.map} +1 -1
  7. package/dist/admin/chunks/{EditConfigurationPage-tMgOELQG.mjs → EditConfigurationPage-DSSrKbwM.mjs} +3 -3
  8. package/dist/admin/chunks/{EditConfigurationPage-tMgOELQG.mjs.map → EditConfigurationPage-DSSrKbwM.mjs.map} +1 -1
  9. package/dist/admin/chunks/{EditViewPage-CYe7wAXF.mjs → EditViewPage-B9oaTSxh.mjs} +6 -9
  10. package/dist/admin/chunks/EditViewPage-B9oaTSxh.mjs.map +1 -0
  11. package/dist/admin/chunks/{EditViewPage-DFkloeMZ.js → EditViewPage-Cyt_AqcH.js} +6 -9
  12. package/dist/admin/chunks/EditViewPage-Cyt_AqcH.js.map +1 -0
  13. package/dist/admin/chunks/{Form-DGUP3zQO.js → Form-BynZsnG8.js} +2 -2
  14. package/dist/admin/chunks/{Form-DGUP3zQO.js.map → Form-BynZsnG8.js.map} +1 -1
  15. package/dist/admin/chunks/{Form-DTO0ZIaB.mjs → Form-CiDhWFF2.mjs} +2 -2
  16. package/dist/admin/chunks/{Form-DTO0ZIaB.mjs.map → Form-CiDhWFF2.mjs.map} +1 -1
  17. package/dist/admin/chunks/{History-C333pgXF.mjs → History-BIzCrHlU.mjs} +5 -5
  18. package/dist/admin/chunks/{History-C333pgXF.mjs.map → History-BIzCrHlU.mjs.map} +1 -1
  19. package/dist/admin/chunks/{History-CQznK1pG.js → History-D8x3KfXk.js} +5 -5
  20. package/dist/admin/chunks/{History-CQznK1pG.js.map → History-D8x3KfXk.js.map} +1 -1
  21. package/dist/admin/chunks/{Input-BexkC_pp.mjs → Input-BrTcf7W8.mjs} +4 -4
  22. package/dist/admin/chunks/{Input-BexkC_pp.mjs.map → Input-BrTcf7W8.mjs.map} +1 -1
  23. package/dist/admin/chunks/{Input-DLJZHw9Y.js → Input-Cx7glRRR.js} +4 -4
  24. package/dist/admin/chunks/{Input-DLJZHw9Y.js.map → Input-Cx7glRRR.js.map} +1 -1
  25. package/dist/admin/chunks/{ListConfigurationPage-71I_stAM.js → ListConfigurationPage-C1HEB6A1.js} +2 -2
  26. package/dist/admin/chunks/{ListConfigurationPage-71I_stAM.js.map → ListConfigurationPage-C1HEB6A1.js.map} +1 -1
  27. package/dist/admin/chunks/{ListConfigurationPage-BX2WR7MI.mjs → ListConfigurationPage-JWHsiJKb.mjs} +2 -2
  28. package/dist/admin/chunks/{ListConfigurationPage-BX2WR7MI.mjs.map → ListConfigurationPage-JWHsiJKb.mjs.map} +1 -1
  29. package/dist/admin/chunks/{ListViewPage-DV3heO4F.js → ListViewPage-38RhQMrO.js} +3 -3
  30. package/dist/admin/chunks/{ListViewPage-DV3heO4F.js.map → ListViewPage-38RhQMrO.js.map} +1 -1
  31. package/dist/admin/chunks/{ListViewPage-BDeT3Dkk.mjs → ListViewPage-lpuA2rS8.mjs} +3 -3
  32. package/dist/admin/chunks/{ListViewPage-BDeT3Dkk.mjs.map → ListViewPage-lpuA2rS8.mjs.map} +1 -1
  33. package/dist/admin/chunks/{NoContentTypePage-9JHYpYVX.mjs → NoContentTypePage-mxdu7QG9.mjs} +2 -2
  34. package/dist/admin/chunks/{NoContentTypePage-9JHYpYVX.mjs.map → NoContentTypePage-mxdu7QG9.mjs.map} +1 -1
  35. package/dist/admin/chunks/{NoContentTypePage-COih9y2J.js → NoContentTypePage-q48fU1h9.js} +2 -2
  36. package/dist/admin/chunks/{NoContentTypePage-COih9y2J.js.map → NoContentTypePage-q48fU1h9.js.map} +1 -1
  37. package/dist/admin/chunks/{NoPermissionsPage-DGAwRIlN.js → NoPermissionsPage-B_p7s1uj.js} +2 -2
  38. package/dist/admin/chunks/{NoPermissionsPage-DGAwRIlN.js.map → NoPermissionsPage-B_p7s1uj.js.map} +1 -1
  39. package/dist/admin/chunks/{NoPermissionsPage-DTe9I47q.mjs → NoPermissionsPage-CihsLbNC.mjs} +2 -2
  40. package/dist/admin/chunks/{NoPermissionsPage-DTe9I47q.mjs.map → NoPermissionsPage-CihsLbNC.mjs.map} +1 -1
  41. package/dist/admin/chunks/{Preview-CXtc9yEV.js → Preview-CMoqDEKI.js} +176 -58
  42. package/dist/admin/chunks/Preview-CMoqDEKI.js.map +1 -0
  43. package/dist/admin/chunks/{Preview-BEq0FXda.mjs → Preview-DGQMt8XZ.mjs} +180 -62
  44. package/dist/admin/chunks/Preview-DGQMt8XZ.mjs.map +1 -0
  45. package/dist/admin/chunks/{Relations-qeZyLDgQ.mjs → Relations-BemEu63h.mjs} +3 -3
  46. package/dist/admin/chunks/{Relations-qeZyLDgQ.mjs.map → Relations-BemEu63h.mjs.map} +1 -1
  47. package/dist/admin/chunks/{Relations-o7_hVGyK.js → Relations-BtC_Gort.js} +3 -3
  48. package/dist/admin/chunks/{Relations-o7_hVGyK.js.map → Relations-BtC_Gort.js.map} +1 -1
  49. package/dist/admin/chunks/{en-LfhocNG2.mjs → en-CImiNxXE.mjs} +3 -1
  50. package/dist/admin/chunks/{en-LfhocNG2.mjs.map → en-CImiNxXE.mjs.map} +1 -1
  51. package/dist/admin/chunks/{en-C1CjdAtC.js → en-CLf4SuMQ.js} +3 -1
  52. package/dist/admin/chunks/{en-C1CjdAtC.js.map → en-CLf4SuMQ.js.map} +1 -1
  53. package/dist/admin/chunks/{index-BHimg6jW.js → index-D7EkCTnw.js} +66 -34
  54. package/dist/admin/chunks/index-D7EkCTnw.js.map +1 -0
  55. package/dist/admin/chunks/{index-Cs6qwFQu.mjs → index-njcS3gUl.mjs} +66 -35
  56. package/dist/admin/chunks/index-njcS3gUl.mjs.map +1 -0
  57. package/dist/admin/chunks/{layout-Dtahn4Ue.js → layout-Ccv9FwbI.js} +4 -4
  58. package/dist/admin/chunks/{layout-Dtahn4Ue.js.map → layout-Ccv9FwbI.js.map} +1 -1
  59. package/dist/admin/chunks/{layout-DStNia_P.mjs → layout-os6F94Aa.mjs} +4 -4
  60. package/dist/admin/chunks/{layout-DStNia_P.mjs.map → layout-os6F94Aa.mjs.map} +1 -1
  61. package/dist/admin/chunks/{relations-Cq8NRUto.mjs → relations-De8hSklO.mjs} +2 -2
  62. package/dist/admin/chunks/{relations-Cq8NRUto.mjs.map → relations-De8hSklO.mjs.map} +1 -1
  63. package/dist/admin/chunks/{relations-XOYEEqMz.js → relations-iguhDgFp.js} +2 -2
  64. package/dist/admin/chunks/{relations-XOYEEqMz.js.map → relations-iguhDgFp.js.map} +1 -1
  65. package/dist/admin/index.js +1 -1
  66. package/dist/admin/index.mjs +1 -1
  67. package/dist/admin/src/components/InjectionZone.d.ts +7 -1
  68. package/dist/admin/src/content-manager.d.ts +3 -0
  69. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
  70. package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +2 -1
  71. package/dist/server/index.js +1 -1
  72. package/dist/server/index.js.map +1 -1
  73. package/dist/server/index.mjs +1 -1
  74. package/dist/server/index.mjs.map +1 -1
  75. package/package.json +7 -7
  76. package/dist/admin/chunks/EditViewPage-CYe7wAXF.mjs.map +0 -1
  77. package/dist/admin/chunks/EditViewPage-DFkloeMZ.js.map +0 -1
  78. package/dist/admin/chunks/Preview-BEq0FXda.mjs.map +0 -1
  79. package/dist/admin/chunks/Preview-CXtc9yEV.js.map +0 -1
  80. package/dist/admin/chunks/index-BHimg6jW.js.map +0 -1
  81. package/dist/admin/chunks/index-Cs6qwFQu.mjs.map +0 -1
@@ -6,12 +6,12 @@ var strapiAdmin = require('@strapi/admin/strapi-admin');
6
6
  var designSystem = require('@strapi/design-system');
7
7
  var reactIntl = require('react-intl');
8
8
  var reactRouterDom = require('react-router-dom');
9
- var index = require('./index-BHimg6jW.js');
10
- var Input = require('./Input-DLJZHw9Y.js');
9
+ var index = require('./index-D7EkCTnw.js');
11
10
  var Icons = require('@strapi/icons');
12
- var qs = require('qs');
13
11
  var styledComponents = require('styled-components');
14
- var EditViewPage = require('./EditViewPage-DFkloeMZ.js');
12
+ var Input = require('./Input-Cx7glRRR.js');
13
+ var qs = require('qs');
14
+ var EditViewPage = require('./EditViewPage-Cyt_AqcH.js');
15
15
  require('lodash/fp/mapValues');
16
16
  require('yup');
17
17
  require('fractional-indexing');
@@ -80,9 +80,9 @@ require('react-dnd-html5-backend');
80
80
  require('./objects-C3EebVVe.js');
81
81
  require('lodash/clone');
82
82
  require('lodash/toPath');
83
- require('./Relations-o7_hVGyK.js');
83
+ require('./Relations-BtC_Gort.js');
84
84
  require('react-window');
85
- require('./relations-XOYEEqMz.js');
85
+ require('./relations-iguhDgFp.js');
86
86
  require('./ComponentIcon-C-EjOUPA.js');
87
87
  require('@strapi/icons/symbols');
88
88
  require('codemirror5');
@@ -120,10 +120,17 @@ function _interopNamespaceDefault(e) {
120
120
 
121
121
  var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
122
122
 
123
+ // TODO use ArrowLineLeft once it's available in the DS
124
+ const AnimatedArrow = styledComponents.styled(Icons.ArrowLeft)`
125
+ will-change: transform;
126
+ rotate: ${(props)=>props.isSideEditorOpen ? '0deg' : '180deg'};
127
+ transition: rotate 0.2s ease-in-out;
128
+ `;
123
129
  const UnstablePreviewContent = ()=>{
124
130
  const previewUrl = usePreviewContext('PreviewContent', (state)=>state.url);
125
131
  const layout = usePreviewContext('PreviewContent', (state)=>state.layout);
126
132
  const { formatMessage } = reactIntl.useIntl();
133
+ const [isSideEditorOpen, setIsSideEditorOpen] = React__namespace.useState(true);
127
134
  return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
128
135
  flex: 1,
129
136
  overflow: "auto",
@@ -131,26 +138,56 @@ const UnstablePreviewContent = ()=>{
131
138
  children: [
132
139
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
133
140
  overflow: "auto",
134
- flex: 1,
141
+ width: isSideEditorOpen ? '50%' : 0,
135
142
  borderWidth: "0 1px 0 0",
136
143
  borderColor: "neutral150",
137
- padding: 6,
144
+ paddingTop: 6,
145
+ paddingBottom: 6,
146
+ // Remove horizontal padding when the editor is closed or it won't fully disappear
147
+ paddingLeft: isSideEditorOpen ? 6 : 0,
148
+ paddingRight: isSideEditorOpen ? 6 : 0,
149
+ transition: "all 0.2s ease-in-out",
138
150
  children: /*#__PURE__*/ jsxRuntime.jsx(Input.FormLayout, {
139
151
  layout: layout.layout,
140
152
  hasBackground: true
141
153
  })
142
154
  }),
143
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
144
- src: previewUrl,
145
- title: formatMessage({
146
- id: 'content-manager.preview.panel.title',
147
- defaultMessage: 'Preview'
148
- }),
155
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Box, {
156
+ position: "relative",
149
157
  flex: 1,
150
158
  height: "100%",
151
- borderWidth: 0,
152
- tag: "iframe"
153
- }, previewUrl)
159
+ overflow: "hidden",
160
+ children: [
161
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
162
+ src: previewUrl,
163
+ title: formatMessage({
164
+ id: 'content-manager.preview.panel.title',
165
+ defaultMessage: 'Preview'
166
+ }),
167
+ width: "100%",
168
+ height: "100%",
169
+ borderWidth: 0,
170
+ tag: "iframe"
171
+ }, previewUrl),
172
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
173
+ variant: "tertiary",
174
+ label: formatMessage(isSideEditorOpen ? {
175
+ id: 'content-manager.preview.content.close-editor',
176
+ defaultMessage: 'Close editor'
177
+ } : {
178
+ id: 'content-manager.preview.content.open-editor',
179
+ defaultMessage: 'Open editor'
180
+ }),
181
+ onClick: ()=>setIsSideEditorOpen((prev)=>!prev),
182
+ position: "absolute",
183
+ top: 2,
184
+ left: 2,
185
+ children: /*#__PURE__*/ jsxRuntime.jsx(AnimatedArrow, {
186
+ isSideEditorOpen: isSideEditorOpen
187
+ })
188
+ })
189
+ ]
190
+ })
154
191
  ]
155
192
  });
156
193
  };
@@ -250,42 +287,44 @@ const PreviewTabs = ()=>{
250
287
  if (!hasDraftAndPublish) {
251
288
  return null;
252
289
  }
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'
290
+ return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Tabs.Root, {
291
+ variant: "simple",
292
+ value: query.status || 'draft',
293
+ onValueChange: handleTabChange,
294
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Tabs.List, {
295
+ "aria-label": formatMessage({
296
+ id: 'preview.tabs.label',
297
+ defaultMessage: 'Document status'
298
+ }),
299
+ children: [
300
+ /*#__PURE__*/ jsxRuntime.jsx(StatusTab, {
301
+ value: "draft",
302
+ children: formatMessage({
303
+ id: 'content-manager.containers.List.draft',
304
+ defaultMessage: 'draft'
305
+ })
262
306
  }),
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
- })
307
+ /*#__PURE__*/ jsxRuntime.jsx(StatusTab, {
308
+ value: "published",
309
+ disabled: documentStatus === 'draft',
310
+ children: formatMessage({
311
+ id: 'content-manager.containers.List.published',
312
+ defaultMessage: 'published'
278
313
  })
279
- ]
280
- })
314
+ })
315
+ ]
281
316
  })
282
317
  });
283
318
  };
284
319
  /* -------------------------------------------------------------------------------------------------
285
320
  * PreviewHeader
286
321
  * -----------------------------------------------------------------------------------------------*/ const UnstablePreviewHeader = ()=>{
287
- // Get the document title
288
322
  const title = usePreviewContext('PreviewHeader', (state)=>state.title);
323
+ const document = usePreviewContext('PreviewHeader', (state)=>state.document);
324
+ const schema = usePreviewContext('PreviewHeader', (state)=>state.schema);
325
+ const meta = usePreviewContext('PreviewHeader', (state)=>state.meta);
326
+ const plugins = strapiAdmin.useStrapiApp('PreviewHeader', (state)=>state.plugins);
327
+ const [{ query }] = strapiAdmin.useQueryParams();
289
328
  const { formatMessage } = reactIntl.useIntl();
290
329
  const { toggleNotification } = strapiAdmin.useNotification();
291
330
  const { copy } = strapiAdmin.useClipboard();
@@ -299,7 +338,17 @@ const PreviewTabs = ()=>{
299
338
  type: 'success'
300
339
  });
301
340
  };
341
+ const hasDraftAndPublish = schema.options?.draftAndPublish ?? false;
342
+ const props = {
343
+ activeTab: query.status ?? null,
344
+ collectionType: schema.kind === 'collectionType' ? 'collection-types' : 'single-types',
345
+ model: schema.uid,
346
+ documentId: document.documentId,
347
+ document,
348
+ meta
349
+ };
302
350
  return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
351
+ height: "48px",
303
352
  gap: 4,
304
353
  background: "neutral0",
305
354
  borderColor: "neutral150",
@@ -327,17 +376,60 @@ const PreviewTabs = ()=>{
327
376
  /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
328
377
  flex: 1,
329
378
  paddingRight: 2,
330
- justifyContent: "space-between",
379
+ gap: 2,
380
+ justifyContent: hasDraftAndPublish ? 'space-between' : 'flex-end',
331
381
  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, {})
382
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
383
+ flex: "1 1 70%",
384
+ children: /*#__PURE__*/ jsxRuntime.jsx(PreviewTabs, {})
385
+ }),
386
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
387
+ gap: 2,
388
+ children: [
389
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
390
+ type: "button",
391
+ label: formatMessage({
392
+ id: 'preview.copy.label',
393
+ defaultMessage: 'Copy preview link'
394
+ }),
395
+ onClick: handleCopyLink,
396
+ children: /*#__PURE__*/ jsxRuntime.jsx(Icons.Link, {})
397
+ }),
398
+ /*#__PURE__*/ jsxRuntime.jsx(index.InjectionZone, {
399
+ area: "preview.actions"
400
+ }),
401
+ /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.DescriptionComponentRenderer, {
402
+ props: props,
403
+ descriptions: plugins['content-manager'].apis.getDocumentActions('preview'),
404
+ children: (actions)=>{
405
+ const filteredActions = actions.filter((action)=>[
406
+ action.position
407
+ ].flat().includes('preview'));
408
+ const [primaryAction, secondaryAction] = filteredActions;
409
+ if (!primaryAction && !secondaryAction) return null;
410
+ // Both actions are available when draft and publish enabled
411
+ if (primaryAction && secondaryAction) {
412
+ return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
413
+ children: [
414
+ /*#__PURE__*/ jsxRuntime.jsx(index.DocumentActionButton, {
415
+ ...secondaryAction,
416
+ variant: secondaryAction.variant || 'secondary'
417
+ }),
418
+ /*#__PURE__*/ jsxRuntime.jsx(index.DocumentActionButton, {
419
+ ...primaryAction,
420
+ variant: primaryAction.variant || 'default'
421
+ })
422
+ ]
423
+ });
424
+ }
425
+ // Otherwise we just have the save action
426
+ return /*#__PURE__*/ jsxRuntime.jsx(index.DocumentActionButton, {
427
+ ...primaryAction,
428
+ variant: primaryAction.variant || 'secondary'
429
+ });
430
+ }
431
+ })
432
+ ]
341
433
  })
342
434
  ]
343
435
  })
@@ -428,6 +520,7 @@ const [PreviewProvider, usePreviewContext] = strapiAdmin.createContext('PreviewP
428
520
  /* -------------------------------------------------------------------------------------------------
429
521
  * PreviewPage
430
522
  * -----------------------------------------------------------------------------------------------*/ const PreviewPage = ()=>{
523
+ const location = reactRouterDom.useLocation();
431
524
  const { formatMessage } = reactIntl.useIntl();
432
525
  // Read all the necessary data from the URL to find the right preview URL
433
526
  const { slug: model, id: documentId, collectionType } = reactRouterDom.useParams();
@@ -465,13 +558,23 @@ const [PreviewProvider, usePreviewContext] = strapiAdmin.createContext('PreviewP
465
558
  if (documentResponse.isLoading || previewUrlResponse.isLoading || documentLayoutResponse.isLoading) {
466
559
  return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
467
560
  }
468
- if (previewUrlResponse.error || documentLayoutResponse.error || !documentResponse.document || !documentResponse.meta || !documentResponse.schema) {
561
+ const initialValues = documentResponse.getInitialFormValues();
562
+ if (previewUrlResponse.error || documentLayoutResponse.error || !documentResponse.document || !documentResponse.meta || !documentResponse.schema || !initialValues) {
469
563
  return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Error, {});
470
564
  }
471
565
  if (!previewUrlResponse.data?.data?.url) {
472
566
  return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.NoData, {});
473
567
  }
474
568
  const documentTitle = documentResponse.getTitle(documentLayoutResponse.edit.settings.mainField);
569
+ const validateSync = (values, options)=>{
570
+ const yupSchema = index.createYupSchema(documentResponse.schema?.attributes, documentResponse.components, {
571
+ status: documentResponse.document?.status,
572
+ ...options
573
+ });
574
+ return yupSchema.validateSync(values, {
575
+ abortEarly: false
576
+ });
577
+ };
475
578
  return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
476
579
  children: [
477
580
  /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Title, {
@@ -490,9 +593,20 @@ const [PreviewProvider, usePreviewContext] = strapiAdmin.createContext('PreviewP
490
593
  schema: documentResponse.schema,
491
594
  layout: documentLayoutResponse.edit,
492
595
  children: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Form, {
493
- method: "POST",
494
- initialValues: documentResponse.document,
596
+ method: "PUT",
597
+ disabled: query.status === 'published' && documentResponse && documentResponse.document.status === 'published',
598
+ initialValues: documentResponse.getInitialFormValues(),
599
+ initialErrors: location?.state?.forceValidation ? validateSync(initialValues, {}) : {},
495
600
  height: "100%",
601
+ validate: (values, options)=>{
602
+ const yupSchema = index.createYupSchema(documentResponse.schema?.attributes, documentResponse.components, {
603
+ status: documentResponse.document?.status,
604
+ ...options
605
+ });
606
+ return yupSchema.validate(values, {
607
+ abortEarly: false
608
+ });
609
+ },
496
610
  children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
497
611
  direction: "column",
498
612
  height: "100%",
@@ -526,6 +640,10 @@ const [PreviewProvider, usePreviewContext] = strapiAdmin.createContext('PreviewP
526
640
  {
527
641
  action: 'plugin::content-manager.explorer.update',
528
642
  subject: model
643
+ },
644
+ {
645
+ action: 'plugin::content-manager.explorer.publish',
646
+ subject: model
529
647
  }
530
648
  ]);
531
649
  if (isLoading) {
@@ -570,4 +688,4 @@ const ProtectedPreviewPage = ()=>{
570
688
 
571
689
  exports.ProtectedPreviewPage = ProtectedPreviewPage;
572
690
  exports.usePreviewContext = usePreviewContext;
573
- //# sourceMappingURL=Preview-CXtc9yEV.js.map
691
+ //# sourceMappingURL=Preview-CMoqDEKI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Preview-CMoqDEKI.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, Flex, IconButton } from '@strapi/design-system';\nimport { ArrowLeft } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { FormLayout } from '../../pages/EditView/components/FormLayout';\nimport { usePreviewContext } from '../pages/Preview';\n\n// TODO use ArrowLineLeft once it's available in the DS\nconst AnimatedArrow = styled(ArrowLeft)<{ isSideEditorOpen: boolean }>`\n will-change: transform;\n rotate: ${(props) => (props.isSideEditorOpen ? '0deg' : '180deg')};\n transition: rotate 0.2s ease-in-out;\n`;\n\nconst UnstablePreviewContent = () => {\n const previewUrl = usePreviewContext('PreviewContent', (state) => state.url);\n const layout = usePreviewContext('PreviewContent', (state) => state.layout);\n\n const { formatMessage } = useIntl();\n\n const [isSideEditorOpen, setIsSideEditorOpen] = React.useState(true);\n\n return (\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={layout.layout} hasBackground />\n </Box>\n <Box position=\"relative\" flex={1} height=\"100%\" overflow=\"hidden\">\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 <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\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, UnstablePreviewContent };\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\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 props = {\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 } 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={props}\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, Portal } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useLocation, 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 { type EditLayout, useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { buildValidParams } from '../../utils/api';\nimport { createYupSchema } from '../../utils/validation';\nimport { PreviewContent, UnstablePreviewContent } 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}\n\nconst [PreviewProvider, usePreviewContext] = createContext<PreviewContextValue>('PreviewPage');\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst PreviewPage = () => {\n const location = useLocation();\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 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\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 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 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 <PreviewProvider\n url={previewUrlResponse.data.data.url}\n document={documentResponse.document}\n title={documentTitle}\n meta={documentResponse.meta}\n schema={documentResponse.schema}\n layout={documentLayoutResponse.edit}\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 <UnstablePreviewContent />\n </>\n ) : (\n <>\n <PreviewHeader />\n <PreviewContent />\n </>\n )}\n </Flex>\n </FormContext>\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([\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":["AnimatedArrow","styled","ArrowLeft","props","isSideEditorOpen","UnstablePreviewContent","previewUrl","usePreviewContext","state","url","layout","formatMessage","useIntl","setIsSideEditorOpen","React","useState","_jsxs","Flex","flex","overflow","alignItems","_jsx","Box","width","borderWidth","borderColor","paddingTop","paddingBottom","paddingLeft","paddingRight","transition","FormLayout","hasBackground","position","height","src","title","id","defaultMessage","tag","IconButton","variant","label","onClick","prev","top","left","PreviewContent","ClosePreviewButton","query","useQueryParams","canGoBack","useHistory","goBack","history","locationIndex","currentLocationIndex","historyTo","at","undefined","fallback","pathname","search","stringify","encode","toWithFallback","handleClick","e","preventDefault","Link","relative","to","Cross","Status","document","schema","meta","hasDraftAndPublished","options","draftAndPublish","status","getDocumentStatus","DocumentStatus","size","PreviewTabs","setQuery","hasDraftAndPublish","documentStatus","handleTabChange","Tabs","Root","value","onValueChange","List","aria-label","StatusTab","disabled","UnstablePreviewHeader","plugins","useStrapiApp","toggleNotification","useNotification","copy","useClipboard","handleCopyLink","window","location","href","message","type","activeTab","collectionType","kind","model","uid","documentId","gap","background","TitleContainer","PreviewTitle","maxWidth","fontSize","fontWeight","justifyContent","LinkIcon","InjectionZone","area","DescriptionComponentRenderer","descriptions","apis","getDocumentActions","actions","filteredActions","filter","action","flat","includes","primaryAction","secondaryAction","_Fragment","DocumentActionButton","PreviewHeader","Grid","gridCols","Item","xs","marginBottom","margin","Typography","Trigger","theme","colors","neutral150","PreviewProvider","createContext","PreviewPage","useLocation","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","FormContext","method","initialErrors","forceValidation","validate","direction","strapi","future","isEnabled","ProtectedPreviewPageImpl","permissions","useRBAC","subject","zIndex","Protect","permission","DocumentRBAC","ProtectedPreviewPage","Portal","FocusTrap"],"mappings":"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"}