@strapi/content-manager 0.0.0-experimental.1905f36833468f12a6ad1dbd03650aa3b6474658 → 0.0.0-experimental.1a574eb92501bf5230c6126b73f8e992690d8da1

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 (76) hide show
  1. package/dist/admin/chunks/{ComponentConfigurationPage-Bn-SMKJG.js → ComponentConfigurationPage-C6-yVoE3.js} +3 -3
  2. package/dist/admin/chunks/{ComponentConfigurationPage-Bn-SMKJG.js.map → ComponentConfigurationPage-C6-yVoE3.js.map} +1 -1
  3. package/dist/admin/chunks/{ComponentConfigurationPage-Cqi5KqZa.mjs → ComponentConfigurationPage-DuN0XVMW.mjs} +3 -3
  4. package/dist/admin/chunks/{ComponentConfigurationPage-Cqi5KqZa.mjs.map → ComponentConfigurationPage-DuN0XVMW.mjs.map} +1 -1
  5. package/dist/admin/chunks/{EditConfigurationPage-CRxsqOhS.js → EditConfigurationPage-CGLkm6-l.js} +3 -3
  6. package/dist/admin/chunks/{EditConfigurationPage-CRxsqOhS.js.map → EditConfigurationPage-CGLkm6-l.js.map} +1 -1
  7. package/dist/admin/chunks/{EditConfigurationPage-Dm16gciL.mjs → EditConfigurationPage-dMHIBbF1.mjs} +3 -3
  8. package/dist/admin/chunks/{EditConfigurationPage-Dm16gciL.mjs.map → EditConfigurationPage-dMHIBbF1.mjs.map} +1 -1
  9. package/dist/admin/chunks/{EditViewPage-eTCSh2HB.mjs → EditViewPage-C6t9zIMh.mjs} +5 -5
  10. package/dist/admin/chunks/{EditViewPage-eTCSh2HB.mjs.map → EditViewPage-C6t9zIMh.mjs.map} +1 -1
  11. package/dist/admin/chunks/{EditViewPage-Dk8CeS40.js → EditViewPage-DXT_1NHv.js} +5 -5
  12. package/dist/admin/chunks/{EditViewPage-Dk8CeS40.js.map → EditViewPage-DXT_1NHv.js.map} +1 -1
  13. package/dist/admin/chunks/{Form-K_hq8zU4.mjs → Form-CYwwV0U-.mjs} +2 -2
  14. package/dist/admin/chunks/{Form-K_hq8zU4.mjs.map → Form-CYwwV0U-.mjs.map} +1 -1
  15. package/dist/admin/chunks/{Form-PB1sNax8.js → Form-D7GCEkaE.js} +2 -2
  16. package/dist/admin/chunks/{Form-PB1sNax8.js.map → Form-D7GCEkaE.js.map} +1 -1
  17. package/dist/admin/chunks/{History-CD5uVchr.mjs → History-CZ9Cnw23.mjs} +5 -5
  18. package/dist/admin/chunks/{History-CD5uVchr.mjs.map → History-CZ9Cnw23.mjs.map} +1 -1
  19. package/dist/admin/chunks/{History-CfsF-U-3.js → History-CZP7hLUV.js} +5 -5
  20. package/dist/admin/chunks/{History-CfsF-U-3.js.map → History-CZP7hLUV.js.map} +1 -1
  21. package/dist/admin/chunks/{Input-grmHplxs.mjs → Input-BR5JpzSp.mjs} +5 -11
  22. package/dist/admin/chunks/Input-BR5JpzSp.mjs.map +1 -0
  23. package/dist/admin/chunks/{Input-CU93J6dl.js → Input-ZnF7wer5.js} +5 -11
  24. package/dist/admin/chunks/Input-ZnF7wer5.js.map +1 -0
  25. package/dist/admin/chunks/{ListConfigurationPage-Eo8txFp0.mjs → ListConfigurationPage-CSHB8jY5.mjs} +2 -2
  26. package/dist/admin/chunks/{ListConfigurationPage-Eo8txFp0.mjs.map → ListConfigurationPage-CSHB8jY5.mjs.map} +1 -1
  27. package/dist/admin/chunks/{ListConfigurationPage-nZti--Mw.js → ListConfigurationPage-DqDJ3esz.js} +2 -2
  28. package/dist/admin/chunks/{ListConfigurationPage-nZti--Mw.js.map → ListConfigurationPage-DqDJ3esz.js.map} +1 -1
  29. package/dist/admin/chunks/{ListViewPage-BBX-zSka.mjs → ListViewPage-o7MuKWe7.mjs} +3 -3
  30. package/dist/admin/chunks/{ListViewPage-BBX-zSka.mjs.map → ListViewPage-o7MuKWe7.mjs.map} +1 -1
  31. package/dist/admin/chunks/{ListViewPage-DQYvHCxn.js → ListViewPage-uGHyqfkp.js} +3 -3
  32. package/dist/admin/chunks/{ListViewPage-DQYvHCxn.js.map → ListViewPage-uGHyqfkp.js.map} +1 -1
  33. package/dist/admin/chunks/{NoContentTypePage-ChYgz3sN.js → NoContentTypePage-CJTJmAcN.js} +2 -2
  34. package/dist/admin/chunks/{NoContentTypePage-ChYgz3sN.js.map → NoContentTypePage-CJTJmAcN.js.map} +1 -1
  35. package/dist/admin/chunks/{NoContentTypePage-C-rbOQO1.mjs → NoContentTypePage-Ci7qKVSj.mjs} +2 -2
  36. package/dist/admin/chunks/{NoContentTypePage-C-rbOQO1.mjs.map → NoContentTypePage-Ci7qKVSj.mjs.map} +1 -1
  37. package/dist/admin/chunks/{NoPermissionsPage-H4SAlJeF.js → NoPermissionsPage-C_oTwBmY.js} +2 -2
  38. package/dist/admin/chunks/{NoPermissionsPage-H4SAlJeF.js.map → NoPermissionsPage-C_oTwBmY.js.map} +1 -1
  39. package/dist/admin/chunks/{NoPermissionsPage-CuxrInhz.mjs → NoPermissionsPage-DgYW5cC4.mjs} +2 -2
  40. package/dist/admin/chunks/{NoPermissionsPage-CuxrInhz.mjs.map → NoPermissionsPage-DgYW5cC4.mjs.map} +1 -1
  41. package/dist/admin/chunks/{Preview-HqnNXn4S.mjs → Preview-BIEc2-KZ.mjs} +110 -102
  42. package/dist/admin/chunks/Preview-BIEc2-KZ.mjs.map +1 -0
  43. package/dist/admin/chunks/{Preview-Bz2dgOiw.js → Preview-DFV3Bgia.js} +107 -99
  44. package/dist/admin/chunks/Preview-DFV3Bgia.js.map +1 -0
  45. package/dist/admin/chunks/{Relations-BMvL4yMN.mjs → Relations-B6iGFlMU.mjs} +6 -470
  46. package/dist/admin/chunks/Relations-B6iGFlMU.mjs.map +1 -0
  47. package/dist/admin/chunks/{Relations-CbCAt692.js → Relations-BhhL2fE7.js} +4 -469
  48. package/dist/admin/chunks/Relations-BhhL2fE7.js.map +1 -0
  49. package/dist/admin/chunks/{index-DfX0uEQT.js → index-BHsh5hLe.js} +36 -19
  50. package/dist/admin/chunks/index-BHsh5hLe.js.map +1 -0
  51. package/dist/admin/chunks/{index-CS_nLuw2.mjs → index-D_xHP7Sa.mjs} +36 -19
  52. package/dist/admin/chunks/index-D_xHP7Sa.mjs.map +1 -0
  53. package/dist/admin/chunks/{layout-B4Uk0v1z.js → layout-C3DUumtc.js} +4 -4
  54. package/dist/admin/chunks/{layout-B4Uk0v1z.js.map → layout-C3DUumtc.js.map} +1 -1
  55. package/dist/admin/chunks/{layout-BInXGFmo.mjs → layout-Dp806Nqc.mjs} +4 -4
  56. package/dist/admin/chunks/{layout-BInXGFmo.mjs.map → layout-Dp806Nqc.mjs.map} +1 -1
  57. package/dist/admin/chunks/{relations-CwL0ThH9.mjs → relations-ksVp_JdY.mjs} +2 -2
  58. package/dist/admin/chunks/{relations-CwL0ThH9.mjs.map → relations-ksVp_JdY.mjs.map} +1 -1
  59. package/dist/admin/chunks/{relations-9C5dQI9e.js → relations-yfvNHWQO.js} +2 -2
  60. package/dist/admin/chunks/{relations-9C5dQI9e.js.map → relations-yfvNHWQO.js.map} +1 -1
  61. package/dist/admin/index.js +1 -1
  62. package/dist/admin/index.mjs +1 -1
  63. package/dist/admin/src/content-manager.d.ts +1 -0
  64. package/dist/admin/src/hooks/useDocument.d.ts +2 -0
  65. package/dist/admin/src/pages/EditView/components/FormInputs/Relations.d.ts +1 -2
  66. package/dist/admin/src/preview/components/PreviewContent.d.ts +1 -2
  67. package/dist/admin/src/preview/pages/Preview.d.ts +2 -0
  68. package/package.json +5 -5
  69. package/dist/admin/chunks/Input-CU93J6dl.js.map +0 -1
  70. package/dist/admin/chunks/Input-grmHplxs.mjs.map +0 -1
  71. package/dist/admin/chunks/Preview-Bz2dgOiw.js.map +0 -1
  72. package/dist/admin/chunks/Preview-HqnNXn4S.mjs.map +0 -1
  73. package/dist/admin/chunks/Relations-BMvL4yMN.mjs.map +0 -1
  74. package/dist/admin/chunks/Relations-CbCAt692.js.map +0 -1
  75. package/dist/admin/chunks/index-CS_nLuw2.mjs.map +0 -1
  76. package/dist/admin/chunks/index-DfX0uEQT.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-DfX0uEQT.js');
10
- var Icons = require('@strapi/icons');
11
10
  var styledComponents = require('styled-components');
12
- var Input = require('./Input-CU93J6dl.js');
11
+ var index = require('./index-BHsh5hLe.js');
12
+ var Input = require('./Input-ZnF7wer5.js');
13
13
  var qs = require('qs');
14
- var EditViewPage = require('./EditViewPage-Dk8CeS40.js');
14
+ var EditViewPage = require('./EditViewPage-DXT_1NHv.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-CbCAt692.js');
83
+ require('./Relations-BhhL2fE7.js');
84
84
  require('react-window');
85
- require('./relations-9C5dQI9e.js');
85
+ require('./relations-yfvNHWQO.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,19 @@ 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
+ }, // The iframe origin is safe to use since it must be provided through the allowedOrigins config
283
+ new URL(iframeRef.current.src).origin);
284
+ }
349
285
  };
350
286
  return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
351
287
  height: "48px",
@@ -399,7 +335,7 @@ const PreviewTabs = ()=>{
399
335
  area: "preview.actions"
400
336
  }),
401
337
  /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.DescriptionComponentRenderer, {
402
- props: props,
338
+ props: documentActionProps,
403
339
  descriptions: plugins['content-manager'].apis.getDocumentActions('preview'),
404
340
  children: (actions)=>{
405
341
  const filteredActions = actions.filter((action)=>[
@@ -519,9 +455,16 @@ const TitleContainer = styledComponents.styled(designSystem.Flex)`
519
455
  const [PreviewProvider, usePreviewContext] = strapiAdmin.createContext('PreviewPage');
520
456
  /* -------------------------------------------------------------------------------------------------
521
457
  * PreviewPage
522
- * -----------------------------------------------------------------------------------------------*/ const PreviewPage = ()=>{
458
+ * -----------------------------------------------------------------------------------------------*/ const AnimatedArrow = styledComponents.styled(Icons.ArrowLineLeft)`
459
+ will-change: transform;
460
+ rotate: ${(props)=>props.isSideEditorOpen ? '0deg' : '180deg'};
461
+ transition: rotate 0.2s ease-in-out;
462
+ `;
463
+ const PreviewPage = ()=>{
523
464
  const location = reactRouterDom.useLocation();
524
465
  const { formatMessage } = reactIntl.useIntl();
466
+ const iframeRef = React__namespace.useRef(null);
467
+ const [isSideEditorOpen, setIsSideEditorOpen] = React__namespace.useState(true);
525
468
  // Read all the necessary data from the URL to find the right preview URL
526
469
  const { slug: model, id: documentId, collectionType } = reactRouterDom.useParams();
527
470
  const [{ query }] = strapiAdmin.useQueryParams();
@@ -576,6 +519,7 @@ const [PreviewProvider, usePreviewContext] = strapiAdmin.createContext('PreviewP
576
519
  abortEarly: false
577
520
  });
578
521
  };
522
+ const previewUrl = previewUrlResponse.data.data.url;
579
523
  return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
580
524
  children: [
581
525
  /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Title, {
@@ -587,15 +531,16 @@ const [PreviewProvider, usePreviewContext] = strapiAdmin.createContext('PreviewP
587
531
  })
588
532
  }),
589
533
  /*#__PURE__*/ jsxRuntime.jsx(PreviewProvider, {
590
- url: previewUrlResponse.data.data.url,
534
+ url: previewUrl,
591
535
  document: documentResponse.document,
592
536
  title: documentTitle,
593
537
  meta: documentResponse.meta,
594
538
  schema: documentResponse.schema,
595
539
  layout: documentLayoutResponse.edit,
540
+ iframeRef: iframeRef,
596
541
  children: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Form, {
597
542
  method: "PUT",
598
- disabled: query.status === 'published' && documentResponse && documentResponse.document.status === 'published',
543
+ disabled: query.status === 'published' && documentResponse && documentResponse.document.status !== 'draft',
599
544
  initialValues: documentResponse.getInitialFormValues(),
600
545
  initialErrors: location?.state?.forceValidation ? validateSync(initialValues, {}) : {},
601
546
  height: "100%",
@@ -608,22 +553,85 @@ const [PreviewProvider, usePreviewContext] = strapiAdmin.createContext('PreviewP
608
553
  abortEarly: false
609
554
  });
610
555
  },
611
- children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
612
- direction: "column",
613
- height: "100%",
614
- alignItems: "stretch",
615
- children: window.strapi.future.isEnabled('unstablePreviewSideEditor') ? /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
616
- children: [
617
- /*#__PURE__*/ jsxRuntime.jsx(UnstablePreviewHeader, {}),
618
- /*#__PURE__*/ jsxRuntime.jsx(UnstablePreviewContent, {})
619
- ]
620
- }) : /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
621
- children: [
622
- /*#__PURE__*/ jsxRuntime.jsx(PreviewHeader, {}),
623
- /*#__PURE__*/ jsxRuntime.jsx(PreviewContent, {})
624
- ]
556
+ children: ({ resetForm })=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
557
+ direction: "column",
558
+ height: "100%",
559
+ alignItems: "stretch",
560
+ children: window.strapi.future.isEnabled('unstablePreviewSideEditor') ? /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
561
+ children: [
562
+ /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Blocker, {
563
+ onProceed: resetForm
564
+ }),
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
+ })
625
634
  })
626
- })
627
635
  })
628
636
  })
629
637
  ]
@@ -689,4 +697,4 @@ const ProtectedPreviewPage = ()=>{
689
697
 
690
698
  exports.ProtectedPreviewPage = ProtectedPreviewPage;
691
699
  exports.usePreviewContext = usePreviewContext;
692
- //# sourceMappingURL=Preview-Bz2dgOiw.js.map
700
+ //# sourceMappingURL=Preview-DFV3Bgia.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Preview-DFV3Bgia.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 Blocker,\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 { 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 <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 !== 'draft'\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 {({ resetForm }) => (\n <Flex direction=\"column\" height=\"100%\" alignItems=\"stretch\">\n {window.strapi.future.isEnabled('unstablePreviewSideEditor') ? (\n <>\n <Blocker onProceed={resetForm} />\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 )}\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","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","layout","FormContext","method","initialErrors","forceValidation","validate","resetForm","direction","strapi","future","isEnabled","Blocker","onProceed","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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"}