@strapi/content-manager 0.0.0-next.24165c9d5cbc756c03fe23bc491569c77973f5ac → 0.0.0-next.2cc011c888f93c1bfab276c5f709a40fb3fc9aac

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 (79) hide show
  1. package/dist/admin/chunks/{ComponentConfigurationPage-Cgjg4CQj.js → ComponentConfigurationPage-BBCYsnnE.js} +3 -3
  2. package/dist/admin/chunks/{ComponentConfigurationPage-Cgjg4CQj.js.map → ComponentConfigurationPage-BBCYsnnE.js.map} +1 -1
  3. package/dist/admin/chunks/{ComponentConfigurationPage-D6mjS3eX.mjs → ComponentConfigurationPage-DNBN8tI3.mjs} +3 -3
  4. package/dist/admin/chunks/{ComponentConfigurationPage-D6mjS3eX.mjs.map → ComponentConfigurationPage-DNBN8tI3.mjs.map} +1 -1
  5. package/dist/admin/chunks/{EditConfigurationPage-DSSrKbwM.mjs → EditConfigurationPage-CoivzF-x.mjs} +3 -3
  6. package/dist/admin/chunks/{EditConfigurationPage-DSSrKbwM.mjs.map → EditConfigurationPage-CoivzF-x.mjs.map} +1 -1
  7. package/dist/admin/chunks/{EditConfigurationPage-C5E6D6NI.js → EditConfigurationPage-Cu0Vt-uc.js} +3 -3
  8. package/dist/admin/chunks/{EditConfigurationPage-C5E6D6NI.js.map → EditConfigurationPage-Cu0Vt-uc.js.map} +1 -1
  9. package/dist/admin/chunks/{EditViewPage-Cyt_AqcH.js → EditViewPage-B48r4DLX.js} +5 -5
  10. package/dist/admin/chunks/{EditViewPage-Cyt_AqcH.js.map → EditViewPage-B48r4DLX.js.map} +1 -1
  11. package/dist/admin/chunks/{EditViewPage-B9oaTSxh.mjs → EditViewPage-BpGtaOKG.mjs} +5 -5
  12. package/dist/admin/chunks/{EditViewPage-B9oaTSxh.mjs.map → EditViewPage-BpGtaOKG.mjs.map} +1 -1
  13. package/dist/admin/chunks/{Form-BynZsnG8.js → Form-DD49gSWW.js} +2 -2
  14. package/dist/admin/chunks/{Form-BynZsnG8.js.map → Form-DD49gSWW.js.map} +1 -1
  15. package/dist/admin/chunks/{Form-CiDhWFF2.mjs → Form-rQQtxfmF.mjs} +2 -2
  16. package/dist/admin/chunks/{Form-CiDhWFF2.mjs.map → Form-rQQtxfmF.mjs.map} +1 -1
  17. package/dist/admin/chunks/{History-BIzCrHlU.mjs → History-BdsTgpW-.mjs} +5 -5
  18. package/dist/admin/chunks/{History-BIzCrHlU.mjs.map → History-BdsTgpW-.mjs.map} +1 -1
  19. package/dist/admin/chunks/{History-D8x3KfXk.js → History-RLJ9Svg6.js} +5 -5
  20. package/dist/admin/chunks/{History-D8x3KfXk.js.map → History-RLJ9Svg6.js.map} +1 -1
  21. package/dist/admin/chunks/{Input-Cx7glRRR.js → Input-BUVu6H9n.js} +4 -4
  22. package/dist/admin/chunks/{Input-Cx7glRRR.js.map → Input-BUVu6H9n.js.map} +1 -1
  23. package/dist/admin/chunks/{Input-BrTcf7W8.mjs → Input-CtIJ2J0c.mjs} +4 -4
  24. package/dist/admin/chunks/{Input-BrTcf7W8.mjs.map → Input-CtIJ2J0c.mjs.map} +1 -1
  25. package/dist/admin/chunks/{ListConfigurationPage-JWHsiJKb.mjs → ListConfigurationPage-38s4e-VJ.mjs} +2 -2
  26. package/dist/admin/chunks/{ListConfigurationPage-JWHsiJKb.mjs.map → ListConfigurationPage-38s4e-VJ.mjs.map} +1 -1
  27. package/dist/admin/chunks/{ListConfigurationPage-C1HEB6A1.js → ListConfigurationPage-DfnrA3dw.js} +2 -2
  28. package/dist/admin/chunks/{ListConfigurationPage-C1HEB6A1.js.map → ListConfigurationPage-DfnrA3dw.js.map} +1 -1
  29. package/dist/admin/chunks/{ListViewPage-lpuA2rS8.mjs → ListViewPage-BTmlktgT.mjs} +3 -3
  30. package/dist/admin/chunks/{ListViewPage-lpuA2rS8.mjs.map → ListViewPage-BTmlktgT.mjs.map} +1 -1
  31. package/dist/admin/chunks/{ListViewPage-38RhQMrO.js → ListViewPage-D9-LGPq_.js} +3 -3
  32. package/dist/admin/chunks/{ListViewPage-38RhQMrO.js.map → ListViewPage-D9-LGPq_.js.map} +1 -1
  33. package/dist/admin/chunks/{NoContentTypePage-mxdu7QG9.mjs → NoContentTypePage-CcyR2i1K.mjs} +2 -2
  34. package/dist/admin/chunks/{NoContentTypePage-mxdu7QG9.mjs.map → NoContentTypePage-CcyR2i1K.mjs.map} +1 -1
  35. package/dist/admin/chunks/{NoContentTypePage-q48fU1h9.js → NoContentTypePage-owzdv-pl.js} +2 -2
  36. package/dist/admin/chunks/{NoContentTypePage-q48fU1h9.js.map → NoContentTypePage-owzdv-pl.js.map} +1 -1
  37. package/dist/admin/chunks/{NoPermissionsPage-B_p7s1uj.js → NoPermissionsPage-CM_r8w5u.js} +2 -2
  38. package/dist/admin/chunks/{NoPermissionsPage-B_p7s1uj.js.map → NoPermissionsPage-CM_r8w5u.js.map} +1 -1
  39. package/dist/admin/chunks/{NoPermissionsPage-CihsLbNC.mjs → NoPermissionsPage-lBonAXej.mjs} +2 -2
  40. package/dist/admin/chunks/{NoPermissionsPage-CihsLbNC.mjs.map → NoPermissionsPage-lBonAXej.mjs.map} +1 -1
  41. package/dist/admin/chunks/{Preview-CMoqDEKI.js → Preview-Bv3GKyWZ.js} +90 -85
  42. package/dist/admin/chunks/Preview-Bv3GKyWZ.js.map +1 -0
  43. package/dist/admin/chunks/{Preview-DGQMt8XZ.mjs → Preview-Dh5Z7aGp.mjs} +92 -87
  44. package/dist/admin/chunks/Preview-Dh5Z7aGp.mjs.map +1 -0
  45. package/dist/admin/chunks/{Relations-BemEu63h.mjs → Relations-DP5krCGC.mjs} +3 -3
  46. package/dist/admin/chunks/{Relations-BemEu63h.mjs.map → Relations-DP5krCGC.mjs.map} +1 -1
  47. package/dist/admin/chunks/{Relations-BtC_Gort.js → Relations-T8Cr0N9M.js} +3 -3
  48. package/dist/admin/chunks/{Relations-BtC_Gort.js.map → Relations-T8Cr0N9M.js.map} +1 -1
  49. package/dist/admin/chunks/{index-njcS3gUl.mjs → index-BkM_Z7pU.mjs} +23 -16
  50. package/dist/admin/chunks/index-BkM_Z7pU.mjs.map +1 -0
  51. package/dist/admin/chunks/{index-D7EkCTnw.js → index-CGBB9Dho.js} +23 -16
  52. package/dist/admin/chunks/index-CGBB9Dho.js.map +1 -0
  53. package/dist/admin/chunks/{layout-os6F94Aa.mjs → layout-D8ji6QNJ.mjs} +4 -4
  54. package/dist/admin/chunks/{layout-os6F94Aa.mjs.map → layout-D8ji6QNJ.mjs.map} +1 -1
  55. package/dist/admin/chunks/{layout-Ccv9FwbI.js → layout-Dbmjk7mC.js} +4 -4
  56. package/dist/admin/chunks/{layout-Ccv9FwbI.js.map → layout-Dbmjk7mC.js.map} +1 -1
  57. package/dist/admin/chunks/{relations-De8hSklO.mjs → relations-Dv0FHoBS.mjs} +2 -2
  58. package/dist/admin/chunks/{relations-De8hSklO.mjs.map → relations-Dv0FHoBS.mjs.map} +1 -1
  59. package/dist/admin/chunks/{relations-iguhDgFp.js → relations-jNJK8ESO.js} +2 -2
  60. package/dist/admin/chunks/{relations-iguhDgFp.js.map → relations-jNJK8ESO.js.map} +1 -1
  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/index.js +1 -1
  66. package/dist/admin/index.mjs +1 -1
  67. package/dist/admin/src/content-manager.d.ts +1 -0
  68. package/dist/admin/src/hooks/useDocument.d.ts +2 -0
  69. package/dist/admin/src/preview/components/PreviewContent.d.ts +1 -2
  70. package/dist/admin/src/preview/pages/Preview.d.ts +2 -0
  71. package/package.json +8 -8
  72. package/dist/admin/chunks/Preview-CMoqDEKI.js.map +0 -1
  73. package/dist/admin/chunks/Preview-DGQMt8XZ.mjs.map +0 -1
  74. package/dist/admin/chunks/index-D7EkCTnw.js.map +0 -1
  75. package/dist/admin/chunks/index-njcS3gUl.mjs.map +0 -1
  76. package/dist/admin/chunks/uk-B24MoTVg.js +0 -145
  77. package/dist/admin/chunks/uk-B24MoTVg.js.map +0 -1
  78. package/dist/admin/chunks/uk-Cpgmm7gE.mjs +0 -140
  79. package/dist/admin/chunks/uk-Cpgmm7gE.mjs.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-D7EkCTnw.js');
10
- var Icons = require('@strapi/icons');
11
10
  var styledComponents = require('styled-components');
12
- var Input = require('./Input-Cx7glRRR.js');
11
+ var index = require('./index-CGBB9Dho.js');
12
+ var Input = require('./Input-BUVu6H9n.js');
13
13
  var qs = require('qs');
14
- var EditViewPage = require('./EditViewPage-Cyt_AqcH.js');
14
+ var EditViewPage = require('./EditViewPage-B48r4DLX.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-BtC_Gort.js');
83
+ require('./Relations-T8Cr0N9M.js');
84
84
  require('react-window');
85
- require('./relations-iguhDgFp.js');
85
+ require('./relations-jNJK8ESO.js');
86
86
  require('./ComponentIcon-C-EjOUPA.js');
87
87
  require('@strapi/icons/symbols');
88
88
  require('codemirror5');
@@ -120,77 +120,6 @@ 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
- `;
129
- const UnstablePreviewContent = ()=>{
130
- const previewUrl = usePreviewContext('PreviewContent', (state)=>state.url);
131
- const layout = usePreviewContext('PreviewContent', (state)=>state.layout);
132
- const { formatMessage } = reactIntl.useIntl();
133
- const [isSideEditorOpen, setIsSideEditorOpen] = React__namespace.useState(true);
134
- return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
135
- flex: 1,
136
- overflow: "auto",
137
- alignItems: "stretch",
138
- children: [
139
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
140
- overflow: "auto",
141
- width: isSideEditorOpen ? '50%' : 0,
142
- borderWidth: "0 1px 0 0",
143
- borderColor: "neutral150",
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",
150
- children: /*#__PURE__*/ jsxRuntime.jsx(Input.FormLayout, {
151
- layout: layout.layout,
152
- hasBackground: true
153
- })
154
- }),
155
- /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Box, {
156
- position: "relative",
157
- flex: 1,
158
- height: "100%",
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
- })
191
- ]
192
- });
193
- };
194
123
  const PreviewContent = ()=>{
195
124
  const previewUrl = usePreviewContext('PreviewContent', (state)=>state.url);
196
125
  const { formatMessage } = reactIntl.useIntl();
@@ -324,6 +253,7 @@ const PreviewTabs = ()=>{
324
253
  const schema = usePreviewContext('PreviewHeader', (state)=>state.schema);
325
254
  const meta = usePreviewContext('PreviewHeader', (state)=>state.meta);
326
255
  const plugins = strapiAdmin.useStrapiApp('PreviewHeader', (state)=>state.plugins);
256
+ const iframeRef = usePreviewContext('PreviewHeader', (state)=>state.iframeRef);
327
257
  const [{ query }] = strapiAdmin.useQueryParams();
328
258
  const { formatMessage } = reactIntl.useIntl();
329
259
  const { toggleNotification } = strapiAdmin.useNotification();
@@ -339,13 +269,18 @@ const PreviewTabs = ()=>{
339
269
  });
340
270
  };
341
271
  const hasDraftAndPublish = schema.options?.draftAndPublish ?? false;
342
- const props = {
272
+ const documentActionProps = {
343
273
  activeTab: query.status ?? null,
344
274
  collectionType: schema.kind === 'collectionType' ? 'collection-types' : 'single-types',
345
275
  model: schema.uid,
346
276
  documentId: document.documentId,
347
277
  document,
348
- meta
278
+ meta,
279
+ onPreview: ()=>{
280
+ iframeRef?.current?.contentWindow?.postMessage({
281
+ type: 'strapiUpdate'
282
+ });
283
+ }
349
284
  };
350
285
  return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
351
286
  height: "48px",
@@ -399,7 +334,7 @@ const PreviewTabs = ()=>{
399
334
  area: "preview.actions"
400
335
  }),
401
336
  /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.DescriptionComponentRenderer, {
402
- props: props,
337
+ props: documentActionProps,
403
338
  descriptions: plugins['content-manager'].apis.getDocumentActions('preview'),
404
339
  children: (actions)=>{
405
340
  const filteredActions = actions.filter((action)=>[
@@ -519,9 +454,16 @@ const TitleContainer = styledComponents.styled(designSystem.Flex)`
519
454
  const [PreviewProvider, usePreviewContext] = strapiAdmin.createContext('PreviewPage');
520
455
  /* -------------------------------------------------------------------------------------------------
521
456
  * PreviewPage
522
- * -----------------------------------------------------------------------------------------------*/ const PreviewPage = ()=>{
457
+ * -----------------------------------------------------------------------------------------------*/ const AnimatedArrow = styledComponents.styled(Icons.ArrowLeft)`
458
+ will-change: transform;
459
+ rotate: ${(props)=>props.isSideEditorOpen ? '0deg' : '180deg'};
460
+ transition: rotate 0.2s ease-in-out;
461
+ `;
462
+ const PreviewPage = ()=>{
523
463
  const location = reactRouterDom.useLocation();
524
464
  const { formatMessage } = reactIntl.useIntl();
465
+ const iframeRef = React__namespace.useRef(null);
466
+ const [isSideEditorOpen, setIsSideEditorOpen] = React__namespace.useState(true);
525
467
  // Read all the necessary data from the URL to find the right preview URL
526
468
  const { slug: model, id: documentId, collectionType } = reactRouterDom.useParams();
527
469
  const [{ query }] = strapiAdmin.useQueryParams();
@@ -555,7 +497,8 @@ const [PreviewProvider, usePreviewContext] = strapiAdmin.createContext('PreviewP
555
497
  params
556
498
  });
557
499
  const documentLayoutResponse = index.useDocumentLayout(model);
558
- if (documentResponse.isLoading || previewUrlResponse.isLoading || documentLayoutResponse.isLoading) {
500
+ const isLoading = previewUrlResponse.isLoading || documentLayoutResponse.isLoading || documentResponse.isLoading;
501
+ if (isLoading && !documentResponse.document?.documentId) {
559
502
  return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
560
503
  }
561
504
  const initialValues = documentResponse.getInitialFormValues();
@@ -575,6 +518,7 @@ const [PreviewProvider, usePreviewContext] = strapiAdmin.createContext('PreviewP
575
518
  abortEarly: false
576
519
  });
577
520
  };
521
+ const previewUrl = previewUrlResponse.data.data.url;
578
522
  return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
579
523
  children: [
580
524
  /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Title, {
@@ -586,12 +530,13 @@ const [PreviewProvider, usePreviewContext] = strapiAdmin.createContext('PreviewP
586
530
  })
587
531
  }),
588
532
  /*#__PURE__*/ jsxRuntime.jsx(PreviewProvider, {
589
- url: previewUrlResponse.data.data.url,
533
+ url: previewUrl,
590
534
  document: documentResponse.document,
591
535
  title: documentTitle,
592
536
  meta: documentResponse.meta,
593
537
  schema: documentResponse.schema,
594
538
  layout: documentLayoutResponse.edit,
539
+ iframeRef: iframeRef,
595
540
  children: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Form, {
596
541
  method: "PUT",
597
542
  disabled: query.status === 'published' && documentResponse && documentResponse.document.status === 'published',
@@ -614,7 +559,67 @@ const [PreviewProvider, usePreviewContext] = strapiAdmin.createContext('PreviewP
614
559
  children: window.strapi.future.isEnabled('unstablePreviewSideEditor') ? /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
615
560
  children: [
616
561
  /*#__PURE__*/ jsxRuntime.jsx(UnstablePreviewHeader, {}),
617
- /*#__PURE__*/ jsxRuntime.jsx(UnstablePreviewContent, {})
562
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
563
+ flex: 1,
564
+ overflow: "auto",
565
+ alignItems: "stretch",
566
+ children: [
567
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
568
+ overflow: "auto",
569
+ width: isSideEditorOpen ? '50%' : 0,
570
+ borderWidth: "0 1px 0 0",
571
+ borderColor: "neutral150",
572
+ paddingTop: 6,
573
+ paddingBottom: 6,
574
+ // Remove horizontal padding when the editor is closed or it won't fully disappear
575
+ paddingLeft: isSideEditorOpen ? 6 : 0,
576
+ paddingRight: isSideEditorOpen ? 6 : 0,
577
+ transition: "all 0.2s ease-in-out",
578
+ children: /*#__PURE__*/ jsxRuntime.jsx(Input.FormLayout, {
579
+ layout: documentLayoutResponse.edit.layout,
580
+ hasBackground: true
581
+ })
582
+ }),
583
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Box, {
584
+ position: "relative",
585
+ flex: 1,
586
+ height: "100%",
587
+ overflow: "hidden",
588
+ children: [
589
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
590
+ "data-testid": "preview-iframe",
591
+ ref: iframeRef,
592
+ src: previewUrl,
593
+ title: formatMessage({
594
+ id: 'content-manager.preview.panel.title',
595
+ defaultMessage: 'Preview'
596
+ }),
597
+ width: "100%",
598
+ height: "100%",
599
+ borderWidth: 0,
600
+ tag: "iframe"
601
+ }, previewUrl),
602
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
603
+ variant: "tertiary",
604
+ label: formatMessage(isSideEditorOpen ? {
605
+ id: 'content-manager.preview.content.close-editor',
606
+ defaultMessage: 'Close editor'
607
+ } : {
608
+ id: 'content-manager.preview.content.open-editor',
609
+ defaultMessage: 'Open editor'
610
+ }),
611
+ onClick: ()=>setIsSideEditorOpen((prev)=>!prev),
612
+ position: "absolute",
613
+ top: 2,
614
+ left: 2,
615
+ children: /*#__PURE__*/ jsxRuntime.jsx(AnimatedArrow, {
616
+ isSideEditorOpen: isSideEditorOpen
617
+ })
618
+ })
619
+ ]
620
+ })
621
+ ]
622
+ })
618
623
  ]
619
624
  }) : /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
620
625
  children: [
@@ -688,4 +693,4 @@ const ProtectedPreviewPage = ()=>{
688
693
 
689
694
  exports.ProtectedPreviewPage = ProtectedPreviewPage;
690
695
  exports.usePreviewContext = usePreviewContext;
691
- //# sourceMappingURL=Preview-CMoqDEKI.js.map
696
+ //# sourceMappingURL=Preview-Bv3GKyWZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Preview-Bv3GKyWZ.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({ type: 'strapiUpdate' });\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 { ArrowLeft } 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 { 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(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 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 <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 </>\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","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","ArrowLeft","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","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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"}