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

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 (84) hide show
  1. package/dist/admin/chunks/{ComponentConfigurationPage-Cgjg4CQj.js → ComponentConfigurationPage-C6-yVoE3.js} +3 -3
  2. package/dist/admin/chunks/{ComponentConfigurationPage-Cgjg4CQj.js.map → ComponentConfigurationPage-C6-yVoE3.js.map} +1 -1
  3. package/dist/admin/chunks/{ComponentConfigurationPage-D6mjS3eX.mjs → ComponentConfigurationPage-DuN0XVMW.mjs} +3 -3
  4. package/dist/admin/chunks/{ComponentConfigurationPage-D6mjS3eX.mjs.map → ComponentConfigurationPage-DuN0XVMW.mjs.map} +1 -1
  5. package/dist/admin/chunks/{EditConfigurationPage-C5E6D6NI.js → EditConfigurationPage-CGLkm6-l.js} +3 -3
  6. package/dist/admin/chunks/{EditConfigurationPage-C5E6D6NI.js.map → EditConfigurationPage-CGLkm6-l.js.map} +1 -1
  7. package/dist/admin/chunks/{EditConfigurationPage-DSSrKbwM.mjs → EditConfigurationPage-dMHIBbF1.mjs} +3 -3
  8. package/dist/admin/chunks/{EditConfigurationPage-DSSrKbwM.mjs.map → EditConfigurationPage-dMHIBbF1.mjs.map} +1 -1
  9. package/dist/admin/chunks/{EditViewPage-B9oaTSxh.mjs → EditViewPage-C6t9zIMh.mjs} +5 -5
  10. package/dist/admin/chunks/{EditViewPage-B9oaTSxh.mjs.map → EditViewPage-C6t9zIMh.mjs.map} +1 -1
  11. package/dist/admin/chunks/{EditViewPage-Cyt_AqcH.js → EditViewPage-DXT_1NHv.js} +5 -5
  12. package/dist/admin/chunks/{EditViewPage-Cyt_AqcH.js.map → EditViewPage-DXT_1NHv.js.map} +1 -1
  13. package/dist/admin/chunks/{Form-CiDhWFF2.mjs → Form-CYwwV0U-.mjs} +2 -2
  14. package/dist/admin/chunks/{Form-CiDhWFF2.mjs.map → Form-CYwwV0U-.mjs.map} +1 -1
  15. package/dist/admin/chunks/{Form-BynZsnG8.js → Form-D7GCEkaE.js} +2 -2
  16. package/dist/admin/chunks/{Form-BynZsnG8.js.map → Form-D7GCEkaE.js.map} +1 -1
  17. package/dist/admin/chunks/{History-BIzCrHlU.mjs → History-CZ9Cnw23.mjs} +5 -5
  18. package/dist/admin/chunks/{History-BIzCrHlU.mjs.map → History-CZ9Cnw23.mjs.map} +1 -1
  19. package/dist/admin/chunks/{History-D8x3KfXk.js → History-CZP7hLUV.js} +5 -5
  20. package/dist/admin/chunks/{History-D8x3KfXk.js.map → History-CZP7hLUV.js.map} +1 -1
  21. package/dist/admin/chunks/{Input-BrTcf7W8.mjs → Input-BR5JpzSp.mjs} +5 -11
  22. package/dist/admin/chunks/Input-BR5JpzSp.mjs.map +1 -0
  23. package/dist/admin/chunks/{Input-Cx7glRRR.js → Input-ZnF7wer5.js} +5 -11
  24. package/dist/admin/chunks/Input-ZnF7wer5.js.map +1 -0
  25. package/dist/admin/chunks/{ListConfigurationPage-JWHsiJKb.mjs → ListConfigurationPage-CSHB8jY5.mjs} +2 -2
  26. package/dist/admin/chunks/{ListConfigurationPage-JWHsiJKb.mjs.map → ListConfigurationPage-CSHB8jY5.mjs.map} +1 -1
  27. package/dist/admin/chunks/{ListConfigurationPage-C1HEB6A1.js → ListConfigurationPage-DqDJ3esz.js} +2 -2
  28. package/dist/admin/chunks/{ListConfigurationPage-C1HEB6A1.js.map → ListConfigurationPage-DqDJ3esz.js.map} +1 -1
  29. package/dist/admin/chunks/{ListViewPage-lpuA2rS8.mjs → ListViewPage-o7MuKWe7.mjs} +3 -3
  30. package/dist/admin/chunks/{ListViewPage-lpuA2rS8.mjs.map → ListViewPage-o7MuKWe7.mjs.map} +1 -1
  31. package/dist/admin/chunks/{ListViewPage-38RhQMrO.js → ListViewPage-uGHyqfkp.js} +3 -3
  32. package/dist/admin/chunks/{ListViewPage-38RhQMrO.js.map → ListViewPage-uGHyqfkp.js.map} +1 -1
  33. package/dist/admin/chunks/{NoContentTypePage-q48fU1h9.js → NoContentTypePage-CJTJmAcN.js} +2 -2
  34. package/dist/admin/chunks/{NoContentTypePage-q48fU1h9.js.map → NoContentTypePage-CJTJmAcN.js.map} +1 -1
  35. package/dist/admin/chunks/{NoContentTypePage-mxdu7QG9.mjs → NoContentTypePage-Ci7qKVSj.mjs} +2 -2
  36. package/dist/admin/chunks/{NoContentTypePage-mxdu7QG9.mjs.map → NoContentTypePage-Ci7qKVSj.mjs.map} +1 -1
  37. package/dist/admin/chunks/{NoPermissionsPage-B_p7s1uj.js → NoPermissionsPage-C_oTwBmY.js} +2 -2
  38. package/dist/admin/chunks/{NoPermissionsPage-B_p7s1uj.js.map → NoPermissionsPage-C_oTwBmY.js.map} +1 -1
  39. package/dist/admin/chunks/{NoPermissionsPage-CihsLbNC.mjs → NoPermissionsPage-DgYW5cC4.mjs} +2 -2
  40. package/dist/admin/chunks/{NoPermissionsPage-CihsLbNC.mjs.map → NoPermissionsPage-DgYW5cC4.mjs.map} +1 -1
  41. package/dist/admin/chunks/{Preview-DGQMt8XZ.mjs → Preview-BIEc2-KZ.mjs} +112 -103
  42. package/dist/admin/chunks/Preview-BIEc2-KZ.mjs.map +1 -0
  43. package/dist/admin/chunks/{Preview-CMoqDEKI.js → Preview-DFV3Bgia.js} +109 -100
  44. package/dist/admin/chunks/Preview-DFV3Bgia.js.map +1 -0
  45. package/dist/admin/chunks/{Relations-BemEu63h.mjs → Relations-B6iGFlMU.mjs} +6 -470
  46. package/dist/admin/chunks/Relations-B6iGFlMU.mjs.map +1 -0
  47. package/dist/admin/chunks/{Relations-BtC_Gort.js → Relations-BhhL2fE7.js} +4 -469
  48. package/dist/admin/chunks/Relations-BhhL2fE7.js.map +1 -0
  49. package/dist/admin/chunks/{index-D7EkCTnw.js → index-BHsh5hLe.js} +37 -20
  50. package/dist/admin/chunks/index-BHsh5hLe.js.map +1 -0
  51. package/dist/admin/chunks/{index-njcS3gUl.mjs → index-D_xHP7Sa.mjs} +37 -20
  52. package/dist/admin/chunks/index-D_xHP7Sa.mjs.map +1 -0
  53. package/dist/admin/chunks/{layout-Ccv9FwbI.js → layout-C3DUumtc.js} +4 -4
  54. package/dist/admin/chunks/{layout-Ccv9FwbI.js.map → layout-C3DUumtc.js.map} +1 -1
  55. package/dist/admin/chunks/{layout-os6F94Aa.mjs → layout-Dp806Nqc.mjs} +4 -4
  56. package/dist/admin/chunks/{layout-os6F94Aa.mjs.map → layout-Dp806Nqc.mjs.map} +1 -1
  57. package/dist/admin/chunks/{relations-De8hSklO.mjs → relations-ksVp_JdY.mjs} +2 -2
  58. package/dist/admin/chunks/{relations-De8hSklO.mjs.map → relations-ksVp_JdY.mjs.map} +1 -1
  59. package/dist/admin/chunks/{relations-iguhDgFp.js → relations-yfvNHWQO.js} +2 -2
  60. package/dist/admin/chunks/{relations-iguhDgFp.js.map → relations-yfvNHWQO.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/pages/EditView/components/FormInputs/Relations.d.ts +1 -2
  70. package/dist/admin/src/preview/components/PreviewContent.d.ts +1 -2
  71. package/dist/admin/src/preview/pages/Preview.d.ts +2 -0
  72. package/package.json +8 -8
  73. package/dist/admin/chunks/Input-BrTcf7W8.mjs.map +0 -1
  74. package/dist/admin/chunks/Input-Cx7glRRR.js.map +0 -1
  75. package/dist/admin/chunks/Preview-CMoqDEKI.js.map +0 -1
  76. package/dist/admin/chunks/Preview-DGQMt8XZ.mjs.map +0 -1
  77. package/dist/admin/chunks/Relations-BemEu63h.mjs.map +0 -1
  78. package/dist/admin/chunks/Relations-BtC_Gort.js.map +0 -1
  79. package/dist/admin/chunks/index-D7EkCTnw.js.map +0 -1
  80. package/dist/admin/chunks/index-njcS3gUl.mjs.map +0 -1
  81. package/dist/admin/chunks/uk-B24MoTVg.js +0 -145
  82. package/dist/admin/chunks/uk-B24MoTVg.js.map +0 -1
  83. package/dist/admin/chunks/uk-Cpgmm7gE.mjs +0 -140
  84. package/dist/admin/chunks/uk-Cpgmm7gE.mjs.map +0 -1
@@ -1,15 +1,15 @@
1
- import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { useStrapiApp, useQueryParams, useNotification, useClipboard, DescriptionComponentRenderer, useHistory, createContext, useRBAC, Page, Form } from '@strapi/admin/strapi-admin';
4
- import { Flex, Box, IconButton, Typography, Tabs, Grid, Portal, FocusTrap } from '@strapi/design-system';
3
+ import { useStrapiApp, useQueryParams, useNotification, useClipboard, DescriptionComponentRenderer, useHistory, createContext, useRBAC, Page, Form, Blocker } from '@strapi/admin/strapi-admin';
4
+ import { Box, Typography, Tabs, Flex, IconButton, Grid, Portal, FocusTrap } from '@strapi/design-system';
5
+ import { Link, Cross, ArrowLineLeft } from '@strapi/icons';
5
6
  import { useIntl } from 'react-intl';
6
7
  import { Link as Link$1, useParams, useLocation } from 'react-router-dom';
7
- import { I as InjectionZone, N as DocumentActionButton, D as DocumentStatus, l as DocumentRBAC, d as buildValidParams, C as COLLECTION_TYPES, O as useGetPreviewUrlQuery, M as useDocument, h as useDocumentLayout, i as createYupSchema } from './index-njcS3gUl.mjs';
8
- import { ArrowLeft, Link, Cross } from '@strapi/icons';
9
8
  import { styled } from 'styled-components';
10
- import { F as FormLayout } from './Input-BrTcf7W8.mjs';
9
+ import { I as InjectionZone, N as DocumentActionButton, D as DocumentStatus, l as DocumentRBAC, d as buildValidParams, C as COLLECTION_TYPES, O as useGetPreviewUrlQuery, M as useDocument, h as useDocumentLayout, i as createYupSchema } from './index-D_xHP7Sa.mjs';
10
+ import { F as FormLayout } from './Input-BR5JpzSp.mjs';
11
11
  import { stringify } from 'qs';
12
- import { getDocumentStatus } from './EditViewPage-B9oaTSxh.mjs';
12
+ import { getDocumentStatus } from './EditViewPage-C6t9zIMh.mjs';
13
13
  import 'lodash/fp/mapValues';
14
14
  import 'yup';
15
15
  import 'fractional-indexing';
@@ -78,9 +78,9 @@ import 'react-dnd-html5-backend';
78
78
  import './objects-wl73iEma.mjs';
79
79
  import 'lodash/clone';
80
80
  import 'lodash/toPath';
81
- import './Relations-BemEu63h.mjs';
81
+ import './Relations-B6iGFlMU.mjs';
82
82
  import 'react-window';
83
- import './relations-De8hSklO.mjs';
83
+ import './relations-ksVp_JdY.mjs';
84
84
  import './ComponentIcon-BZcTc4rj.mjs';
85
85
  import '@strapi/icons/symbols';
86
86
  import 'codemirror5';
@@ -99,77 +99,6 @@ import 'markdown-it-sup';
99
99
  import 'highlight.js/styles/solarized-dark.css';
100
100
  import 'codemirror5/addon/display/placeholder';
101
101
 
102
- // TODO use ArrowLineLeft once it's available in the DS
103
- const AnimatedArrow = styled(ArrowLeft)`
104
- will-change: transform;
105
- rotate: ${(props)=>props.isSideEditorOpen ? '0deg' : '180deg'};
106
- transition: rotate 0.2s ease-in-out;
107
- `;
108
- const UnstablePreviewContent = ()=>{
109
- const previewUrl = usePreviewContext('PreviewContent', (state)=>state.url);
110
- const layout = usePreviewContext('PreviewContent', (state)=>state.layout);
111
- const { formatMessage } = useIntl();
112
- const [isSideEditorOpen, setIsSideEditorOpen] = React.useState(true);
113
- return /*#__PURE__*/ jsxs(Flex, {
114
- flex: 1,
115
- overflow: "auto",
116
- alignItems: "stretch",
117
- children: [
118
- /*#__PURE__*/ jsx(Box, {
119
- overflow: "auto",
120
- width: isSideEditorOpen ? '50%' : 0,
121
- borderWidth: "0 1px 0 0",
122
- borderColor: "neutral150",
123
- paddingTop: 6,
124
- paddingBottom: 6,
125
- // Remove horizontal padding when the editor is closed or it won't fully disappear
126
- paddingLeft: isSideEditorOpen ? 6 : 0,
127
- paddingRight: isSideEditorOpen ? 6 : 0,
128
- transition: "all 0.2s ease-in-out",
129
- children: /*#__PURE__*/ jsx(FormLayout, {
130
- layout: layout.layout,
131
- hasBackground: true
132
- })
133
- }),
134
- /*#__PURE__*/ jsxs(Box, {
135
- position: "relative",
136
- flex: 1,
137
- height: "100%",
138
- overflow: "hidden",
139
- children: [
140
- /*#__PURE__*/ jsx(Box, {
141
- src: previewUrl,
142
- title: formatMessage({
143
- id: 'content-manager.preview.panel.title',
144
- defaultMessage: 'Preview'
145
- }),
146
- width: "100%",
147
- height: "100%",
148
- borderWidth: 0,
149
- tag: "iframe"
150
- }, previewUrl),
151
- /*#__PURE__*/ jsx(IconButton, {
152
- variant: "tertiary",
153
- label: formatMessage(isSideEditorOpen ? {
154
- id: 'content-manager.preview.content.close-editor',
155
- defaultMessage: 'Close editor'
156
- } : {
157
- id: 'content-manager.preview.content.open-editor',
158
- defaultMessage: 'Open editor'
159
- }),
160
- onClick: ()=>setIsSideEditorOpen((prev)=>!prev),
161
- position: "absolute",
162
- top: 2,
163
- left: 2,
164
- children: /*#__PURE__*/ jsx(AnimatedArrow, {
165
- isSideEditorOpen: isSideEditorOpen
166
- })
167
- })
168
- ]
169
- })
170
- ]
171
- });
172
- };
173
102
  const PreviewContent = ()=>{
174
103
  const previewUrl = usePreviewContext('PreviewContent', (state)=>state.url);
175
104
  const { formatMessage } = useIntl();
@@ -303,6 +232,7 @@ const PreviewTabs = ()=>{
303
232
  const schema = usePreviewContext('PreviewHeader', (state)=>state.schema);
304
233
  const meta = usePreviewContext('PreviewHeader', (state)=>state.meta);
305
234
  const plugins = useStrapiApp('PreviewHeader', (state)=>state.plugins);
235
+ const iframeRef = usePreviewContext('PreviewHeader', (state)=>state.iframeRef);
306
236
  const [{ query }] = useQueryParams();
307
237
  const { formatMessage } = useIntl();
308
238
  const { toggleNotification } = useNotification();
@@ -318,13 +248,19 @@ const PreviewTabs = ()=>{
318
248
  });
319
249
  };
320
250
  const hasDraftAndPublish = schema.options?.draftAndPublish ?? false;
321
- const props = {
251
+ const documentActionProps = {
322
252
  activeTab: query.status ?? null,
323
253
  collectionType: schema.kind === 'collectionType' ? 'collection-types' : 'single-types',
324
254
  model: schema.uid,
325
255
  documentId: document.documentId,
326
256
  document,
327
- meta
257
+ meta,
258
+ onPreview: ()=>{
259
+ iframeRef?.current?.contentWindow?.postMessage({
260
+ type: 'strapiUpdate'
261
+ }, // The iframe origin is safe to use since it must be provided through the allowedOrigins config
262
+ new URL(iframeRef.current.src).origin);
263
+ }
328
264
  };
329
265
  return /*#__PURE__*/ jsxs(Flex, {
330
266
  height: "48px",
@@ -378,7 +314,7 @@ const PreviewTabs = ()=>{
378
314
  area: "preview.actions"
379
315
  }),
380
316
  /*#__PURE__*/ jsx(DescriptionComponentRenderer, {
381
- props: props,
317
+ props: documentActionProps,
382
318
  descriptions: plugins['content-manager'].apis.getDocumentActions('preview'),
383
319
  children: (actions)=>{
384
320
  const filteredActions = actions.filter((action)=>[
@@ -498,9 +434,16 @@ const TitleContainer = styled(Flex)`
498
434
  const [PreviewProvider, usePreviewContext] = createContext('PreviewPage');
499
435
  /* -------------------------------------------------------------------------------------------------
500
436
  * PreviewPage
501
- * -----------------------------------------------------------------------------------------------*/ const PreviewPage = ()=>{
437
+ * -----------------------------------------------------------------------------------------------*/ const AnimatedArrow = styled(ArrowLineLeft)`
438
+ will-change: transform;
439
+ rotate: ${(props)=>props.isSideEditorOpen ? '0deg' : '180deg'};
440
+ transition: rotate 0.2s ease-in-out;
441
+ `;
442
+ const PreviewPage = ()=>{
502
443
  const location = useLocation();
503
444
  const { formatMessage } = useIntl();
445
+ const iframeRef = React.useRef(null);
446
+ const [isSideEditorOpen, setIsSideEditorOpen] = React.useState(true);
504
447
  // Read all the necessary data from the URL to find the right preview URL
505
448
  const { slug: model, id: documentId, collectionType } = useParams();
506
449
  const [{ query }] = useQueryParams();
@@ -534,7 +477,8 @@ const [PreviewProvider, usePreviewContext] = createContext('PreviewPage');
534
477
  params
535
478
  });
536
479
  const documentLayoutResponse = useDocumentLayout(model);
537
- if (documentResponse.isLoading || previewUrlResponse.isLoading || documentLayoutResponse.isLoading) {
480
+ const isLoading = previewUrlResponse.isLoading || documentLayoutResponse.isLoading || documentResponse.isLoading;
481
+ if (isLoading && !documentResponse.document?.documentId) {
538
482
  return /*#__PURE__*/ jsx(Page.Loading, {});
539
483
  }
540
484
  const initialValues = documentResponse.getInitialFormValues();
@@ -554,6 +498,7 @@ const [PreviewProvider, usePreviewContext] = createContext('PreviewPage');
554
498
  abortEarly: false
555
499
  });
556
500
  };
501
+ const previewUrl = previewUrlResponse.data.data.url;
557
502
  return /*#__PURE__*/ jsxs(Fragment, {
558
503
  children: [
559
504
  /*#__PURE__*/ jsx(Page.Title, {
@@ -565,15 +510,16 @@ const [PreviewProvider, usePreviewContext] = createContext('PreviewPage');
565
510
  })
566
511
  }),
567
512
  /*#__PURE__*/ jsx(PreviewProvider, {
568
- url: previewUrlResponse.data.data.url,
513
+ url: previewUrl,
569
514
  document: documentResponse.document,
570
515
  title: documentTitle,
571
516
  meta: documentResponse.meta,
572
517
  schema: documentResponse.schema,
573
518
  layout: documentLayoutResponse.edit,
519
+ iframeRef: iframeRef,
574
520
  children: /*#__PURE__*/ jsx(Form, {
575
521
  method: "PUT",
576
- disabled: query.status === 'published' && documentResponse && documentResponse.document.status === 'published',
522
+ disabled: query.status === 'published' && documentResponse && documentResponse.document.status !== 'draft',
577
523
  initialValues: documentResponse.getInitialFormValues(),
578
524
  initialErrors: location?.state?.forceValidation ? validateSync(initialValues, {}) : {},
579
525
  height: "100%",
@@ -586,22 +532,85 @@ const [PreviewProvider, usePreviewContext] = createContext('PreviewPage');
586
532
  abortEarly: false
587
533
  });
588
534
  },
589
- children: /*#__PURE__*/ jsx(Flex, {
590
- direction: "column",
591
- height: "100%",
592
- alignItems: "stretch",
593
- children: window.strapi.future.isEnabled('unstablePreviewSideEditor') ? /*#__PURE__*/ jsxs(Fragment, {
594
- children: [
595
- /*#__PURE__*/ jsx(UnstablePreviewHeader, {}),
596
- /*#__PURE__*/ jsx(UnstablePreviewContent, {})
597
- ]
598
- }) : /*#__PURE__*/ jsxs(Fragment, {
599
- children: [
600
- /*#__PURE__*/ jsx(PreviewHeader, {}),
601
- /*#__PURE__*/ jsx(PreviewContent, {})
602
- ]
535
+ children: ({ resetForm })=>/*#__PURE__*/ jsx(Flex, {
536
+ direction: "column",
537
+ height: "100%",
538
+ alignItems: "stretch",
539
+ children: window.strapi.future.isEnabled('unstablePreviewSideEditor') ? /*#__PURE__*/ jsxs(Fragment, {
540
+ children: [
541
+ /*#__PURE__*/ jsx(Blocker, {
542
+ onProceed: resetForm
543
+ }),
544
+ /*#__PURE__*/ jsx(UnstablePreviewHeader, {}),
545
+ /*#__PURE__*/ jsxs(Flex, {
546
+ flex: 1,
547
+ overflow: "auto",
548
+ alignItems: "stretch",
549
+ children: [
550
+ /*#__PURE__*/ jsx(Box, {
551
+ overflow: "auto",
552
+ width: isSideEditorOpen ? '50%' : 0,
553
+ borderWidth: "0 1px 0 0",
554
+ borderColor: "neutral150",
555
+ paddingTop: 6,
556
+ paddingBottom: 6,
557
+ // Remove horizontal padding when the editor is closed or it won't fully disappear
558
+ paddingLeft: isSideEditorOpen ? 6 : 0,
559
+ paddingRight: isSideEditorOpen ? 6 : 0,
560
+ transition: "all 0.2s ease-in-out",
561
+ children: /*#__PURE__*/ jsx(FormLayout, {
562
+ layout: documentLayoutResponse.edit.layout,
563
+ hasBackground: true
564
+ })
565
+ }),
566
+ /*#__PURE__*/ jsxs(Box, {
567
+ position: "relative",
568
+ flex: 1,
569
+ height: "100%",
570
+ overflow: "hidden",
571
+ children: [
572
+ /*#__PURE__*/ jsx(Box, {
573
+ "data-testid": "preview-iframe",
574
+ ref: iframeRef,
575
+ src: previewUrl,
576
+ title: formatMessage({
577
+ id: 'content-manager.preview.panel.title',
578
+ defaultMessage: 'Preview'
579
+ }),
580
+ width: "100%",
581
+ height: "100%",
582
+ borderWidth: 0,
583
+ tag: "iframe"
584
+ }, previewUrl),
585
+ /*#__PURE__*/ jsx(IconButton, {
586
+ variant: "tertiary",
587
+ label: formatMessage(isSideEditorOpen ? {
588
+ id: 'content-manager.preview.content.close-editor',
589
+ defaultMessage: 'Close editor'
590
+ } : {
591
+ id: 'content-manager.preview.content.open-editor',
592
+ defaultMessage: 'Open editor'
593
+ }),
594
+ onClick: ()=>setIsSideEditorOpen((prev)=>!prev),
595
+ position: "absolute",
596
+ top: 2,
597
+ left: 2,
598
+ children: /*#__PURE__*/ jsx(AnimatedArrow, {
599
+ isSideEditorOpen: isSideEditorOpen
600
+ })
601
+ })
602
+ ]
603
+ })
604
+ ]
605
+ })
606
+ ]
607
+ }) : /*#__PURE__*/ jsxs(Fragment, {
608
+ children: [
609
+ /*#__PURE__*/ jsx(PreviewHeader, {}),
610
+ /*#__PURE__*/ jsx(PreviewContent, {})
611
+ ]
612
+ })
603
613
  })
604
- })
605
614
  })
606
615
  })
607
616
  ]
@@ -666,4 +675,4 @@ const ProtectedPreviewPage = ()=>{
666
675
  };
667
676
 
668
677
  export { ProtectedPreviewPage, usePreviewContext };
669
- //# sourceMappingURL=Preview-DGQMt8XZ.mjs.map
678
+ //# sourceMappingURL=Preview-BIEc2-KZ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Preview-BIEc2-KZ.mjs","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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"}