@strapi/content-manager 5.10.2 → 5.10.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/chunks/{ComponentConfigurationPage-C5H-5L1u.js → ComponentConfigurationPage-Cgjg4CQj.js} +3 -3
- package/dist/admin/chunks/{ComponentConfigurationPage-C5H-5L1u.js.map → ComponentConfigurationPage-Cgjg4CQj.js.map} +1 -1
- package/dist/admin/chunks/{ComponentConfigurationPage-BN2kOtDm.mjs → ComponentConfigurationPage-D6mjS3eX.mjs} +3 -3
- package/dist/admin/chunks/{ComponentConfigurationPage-BN2kOtDm.mjs.map → ComponentConfigurationPage-D6mjS3eX.mjs.map} +1 -1
- package/dist/admin/chunks/{EditConfigurationPage-BExtZuB7.js → EditConfigurationPage-C5E6D6NI.js} +3 -3
- package/dist/admin/chunks/{EditConfigurationPage-BExtZuB7.js.map → EditConfigurationPage-C5E6D6NI.js.map} +1 -1
- package/dist/admin/chunks/{EditConfigurationPage-tMgOELQG.mjs → EditConfigurationPage-DSSrKbwM.mjs} +3 -3
- package/dist/admin/chunks/{EditConfigurationPage-tMgOELQG.mjs.map → EditConfigurationPage-DSSrKbwM.mjs.map} +1 -1
- package/dist/admin/chunks/{EditViewPage-CYe7wAXF.mjs → EditViewPage-B9oaTSxh.mjs} +6 -9
- package/dist/admin/chunks/EditViewPage-B9oaTSxh.mjs.map +1 -0
- package/dist/admin/chunks/{EditViewPage-DFkloeMZ.js → EditViewPage-Cyt_AqcH.js} +6 -9
- package/dist/admin/chunks/EditViewPage-Cyt_AqcH.js.map +1 -0
- package/dist/admin/chunks/{Form-DGUP3zQO.js → Form-BynZsnG8.js} +2 -2
- package/dist/admin/chunks/{Form-DGUP3zQO.js.map → Form-BynZsnG8.js.map} +1 -1
- package/dist/admin/chunks/{Form-DTO0ZIaB.mjs → Form-CiDhWFF2.mjs} +2 -2
- package/dist/admin/chunks/{Form-DTO0ZIaB.mjs.map → Form-CiDhWFF2.mjs.map} +1 -1
- package/dist/admin/chunks/{History-C333pgXF.mjs → History-BIzCrHlU.mjs} +5 -5
- package/dist/admin/chunks/{History-C333pgXF.mjs.map → History-BIzCrHlU.mjs.map} +1 -1
- package/dist/admin/chunks/{History-CQznK1pG.js → History-D8x3KfXk.js} +5 -5
- package/dist/admin/chunks/{History-CQznK1pG.js.map → History-D8x3KfXk.js.map} +1 -1
- package/dist/admin/chunks/{Input-BexkC_pp.mjs → Input-BrTcf7W8.mjs} +4 -4
- package/dist/admin/chunks/{Input-BexkC_pp.mjs.map → Input-BrTcf7W8.mjs.map} +1 -1
- package/dist/admin/chunks/{Input-DLJZHw9Y.js → Input-Cx7glRRR.js} +4 -4
- package/dist/admin/chunks/{Input-DLJZHw9Y.js.map → Input-Cx7glRRR.js.map} +1 -1
- package/dist/admin/chunks/{ListConfigurationPage-71I_stAM.js → ListConfigurationPage-C1HEB6A1.js} +2 -2
- package/dist/admin/chunks/{ListConfigurationPage-71I_stAM.js.map → ListConfigurationPage-C1HEB6A1.js.map} +1 -1
- package/dist/admin/chunks/{ListConfigurationPage-BX2WR7MI.mjs → ListConfigurationPage-JWHsiJKb.mjs} +2 -2
- package/dist/admin/chunks/{ListConfigurationPage-BX2WR7MI.mjs.map → ListConfigurationPage-JWHsiJKb.mjs.map} +1 -1
- package/dist/admin/chunks/{ListViewPage-DV3heO4F.js → ListViewPage-38RhQMrO.js} +3 -3
- package/dist/admin/chunks/{ListViewPage-DV3heO4F.js.map → ListViewPage-38RhQMrO.js.map} +1 -1
- package/dist/admin/chunks/{ListViewPage-BDeT3Dkk.mjs → ListViewPage-lpuA2rS8.mjs} +3 -3
- package/dist/admin/chunks/{ListViewPage-BDeT3Dkk.mjs.map → ListViewPage-lpuA2rS8.mjs.map} +1 -1
- package/dist/admin/chunks/{NoContentTypePage-9JHYpYVX.mjs → NoContentTypePage-mxdu7QG9.mjs} +2 -2
- package/dist/admin/chunks/{NoContentTypePage-9JHYpYVX.mjs.map → NoContentTypePage-mxdu7QG9.mjs.map} +1 -1
- package/dist/admin/chunks/{NoContentTypePage-COih9y2J.js → NoContentTypePage-q48fU1h9.js} +2 -2
- package/dist/admin/chunks/{NoContentTypePage-COih9y2J.js.map → NoContentTypePage-q48fU1h9.js.map} +1 -1
- package/dist/admin/chunks/{NoPermissionsPage-DGAwRIlN.js → NoPermissionsPage-B_p7s1uj.js} +2 -2
- package/dist/admin/chunks/{NoPermissionsPage-DGAwRIlN.js.map → NoPermissionsPage-B_p7s1uj.js.map} +1 -1
- package/dist/admin/chunks/{NoPermissionsPage-DTe9I47q.mjs → NoPermissionsPage-CihsLbNC.mjs} +2 -2
- package/dist/admin/chunks/{NoPermissionsPage-DTe9I47q.mjs.map → NoPermissionsPage-CihsLbNC.mjs.map} +1 -1
- package/dist/admin/chunks/{Preview-CXtc9yEV.js → Preview-CMoqDEKI.js} +176 -58
- package/dist/admin/chunks/Preview-CMoqDEKI.js.map +1 -0
- package/dist/admin/chunks/{Preview-BEq0FXda.mjs → Preview-DGQMt8XZ.mjs} +180 -62
- package/dist/admin/chunks/Preview-DGQMt8XZ.mjs.map +1 -0
- package/dist/admin/chunks/{Relations-qeZyLDgQ.mjs → Relations-BemEu63h.mjs} +3 -3
- package/dist/admin/chunks/{Relations-qeZyLDgQ.mjs.map → Relations-BemEu63h.mjs.map} +1 -1
- package/dist/admin/chunks/{Relations-o7_hVGyK.js → Relations-BtC_Gort.js} +3 -3
- package/dist/admin/chunks/{Relations-o7_hVGyK.js.map → Relations-BtC_Gort.js.map} +1 -1
- package/dist/admin/chunks/{en-LfhocNG2.mjs → en-CImiNxXE.mjs} +3 -1
- package/dist/admin/chunks/{en-LfhocNG2.mjs.map → en-CImiNxXE.mjs.map} +1 -1
- package/dist/admin/chunks/{en-C1CjdAtC.js → en-CLf4SuMQ.js} +3 -1
- package/dist/admin/chunks/{en-C1CjdAtC.js.map → en-CLf4SuMQ.js.map} +1 -1
- package/dist/admin/chunks/{index-BHimg6jW.js → index-D7EkCTnw.js} +66 -34
- package/dist/admin/chunks/index-D7EkCTnw.js.map +1 -0
- package/dist/admin/chunks/{index-Cs6qwFQu.mjs → index-njcS3gUl.mjs} +66 -35
- package/dist/admin/chunks/index-njcS3gUl.mjs.map +1 -0
- package/dist/admin/chunks/{layout-Dtahn4Ue.js → layout-Ccv9FwbI.js} +4 -4
- package/dist/admin/chunks/{layout-Dtahn4Ue.js.map → layout-Ccv9FwbI.js.map} +1 -1
- package/dist/admin/chunks/{layout-DStNia_P.mjs → layout-os6F94Aa.mjs} +4 -4
- package/dist/admin/chunks/{layout-DStNia_P.mjs.map → layout-os6F94Aa.mjs.map} +1 -1
- package/dist/admin/chunks/{relations-Cq8NRUto.mjs → relations-De8hSklO.mjs} +2 -2
- package/dist/admin/chunks/{relations-Cq8NRUto.mjs.map → relations-De8hSklO.mjs.map} +1 -1
- package/dist/admin/chunks/{relations-XOYEEqMz.js → relations-iguhDgFp.js} +2 -2
- package/dist/admin/chunks/{relations-XOYEEqMz.js.map → relations-iguhDgFp.js.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/components/InjectionZone.d.ts +7 -1
- package/dist/admin/src/content-manager.d.ts +3 -0
- package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
- package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +2 -1
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +1 -1
- package/dist/server/index.mjs.map +1 -1
- package/package.json +7 -7
- package/dist/admin/chunks/EditViewPage-CYe7wAXF.mjs.map +0 -1
- package/dist/admin/chunks/EditViewPage-DFkloeMZ.js.map +0 -1
- package/dist/admin/chunks/Preview-BEq0FXda.mjs.map +0 -1
- package/dist/admin/chunks/Preview-CXtc9yEV.js.map +0 -1
- package/dist/admin/chunks/index-BHimg6jW.js.map +0 -1
- package/dist/admin/chunks/index-Cs6qwFQu.mjs.map +0 -1
@@ -6,12 +6,12 @@ var strapiAdmin = require('@strapi/admin/strapi-admin');
|
|
6
6
|
var designSystem = require('@strapi/design-system');
|
7
7
|
var reactIntl = require('react-intl');
|
8
8
|
var reactRouterDom = require('react-router-dom');
|
9
|
-
var index = require('./index-
|
10
|
-
var Input = require('./Input-DLJZHw9Y.js');
|
9
|
+
var index = require('./index-D7EkCTnw.js');
|
11
10
|
var Icons = require('@strapi/icons');
|
12
|
-
var qs = require('qs');
|
13
11
|
var styledComponents = require('styled-components');
|
14
|
-
var
|
12
|
+
var Input = require('./Input-Cx7glRRR.js');
|
13
|
+
var qs = require('qs');
|
14
|
+
var EditViewPage = require('./EditViewPage-Cyt_AqcH.js');
|
15
15
|
require('lodash/fp/mapValues');
|
16
16
|
require('yup');
|
17
17
|
require('fractional-indexing');
|
@@ -80,9 +80,9 @@ require('react-dnd-html5-backend');
|
|
80
80
|
require('./objects-C3EebVVe.js');
|
81
81
|
require('lodash/clone');
|
82
82
|
require('lodash/toPath');
|
83
|
-
require('./Relations-
|
83
|
+
require('./Relations-BtC_Gort.js');
|
84
84
|
require('react-window');
|
85
|
-
require('./relations-
|
85
|
+
require('./relations-iguhDgFp.js');
|
86
86
|
require('./ComponentIcon-C-EjOUPA.js');
|
87
87
|
require('@strapi/icons/symbols');
|
88
88
|
require('codemirror5');
|
@@ -120,10 +120,17 @@ function _interopNamespaceDefault(e) {
|
|
120
120
|
|
121
121
|
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
122
122
|
|
123
|
+
// TODO use ArrowLineLeft once it's available in the DS
|
124
|
+
const AnimatedArrow = styledComponents.styled(Icons.ArrowLeft)`
|
125
|
+
will-change: transform;
|
126
|
+
rotate: ${(props)=>props.isSideEditorOpen ? '0deg' : '180deg'};
|
127
|
+
transition: rotate 0.2s ease-in-out;
|
128
|
+
`;
|
123
129
|
const UnstablePreviewContent = ()=>{
|
124
130
|
const previewUrl = usePreviewContext('PreviewContent', (state)=>state.url);
|
125
131
|
const layout = usePreviewContext('PreviewContent', (state)=>state.layout);
|
126
132
|
const { formatMessage } = reactIntl.useIntl();
|
133
|
+
const [isSideEditorOpen, setIsSideEditorOpen] = React__namespace.useState(true);
|
127
134
|
return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
128
135
|
flex: 1,
|
129
136
|
overflow: "auto",
|
@@ -131,26 +138,56 @@ const UnstablePreviewContent = ()=>{
|
|
131
138
|
children: [
|
132
139
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
133
140
|
overflow: "auto",
|
134
|
-
|
141
|
+
width: isSideEditorOpen ? '50%' : 0,
|
135
142
|
borderWidth: "0 1px 0 0",
|
136
143
|
borderColor: "neutral150",
|
137
|
-
|
144
|
+
paddingTop: 6,
|
145
|
+
paddingBottom: 6,
|
146
|
+
// Remove horizontal padding when the editor is closed or it won't fully disappear
|
147
|
+
paddingLeft: isSideEditorOpen ? 6 : 0,
|
148
|
+
paddingRight: isSideEditorOpen ? 6 : 0,
|
149
|
+
transition: "all 0.2s ease-in-out",
|
138
150
|
children: /*#__PURE__*/ jsxRuntime.jsx(Input.FormLayout, {
|
139
151
|
layout: layout.layout,
|
140
152
|
hasBackground: true
|
141
153
|
})
|
142
154
|
}),
|
143
|
-
/*#__PURE__*/ jsxRuntime.
|
144
|
-
|
145
|
-
title: formatMessage({
|
146
|
-
id: 'content-manager.preview.panel.title',
|
147
|
-
defaultMessage: 'Preview'
|
148
|
-
}),
|
155
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Box, {
|
156
|
+
position: "relative",
|
149
157
|
flex: 1,
|
150
158
|
height: "100%",
|
151
|
-
|
152
|
-
|
153
|
-
|
159
|
+
overflow: "hidden",
|
160
|
+
children: [
|
161
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
162
|
+
src: previewUrl,
|
163
|
+
title: formatMessage({
|
164
|
+
id: 'content-manager.preview.panel.title',
|
165
|
+
defaultMessage: 'Preview'
|
166
|
+
}),
|
167
|
+
width: "100%",
|
168
|
+
height: "100%",
|
169
|
+
borderWidth: 0,
|
170
|
+
tag: "iframe"
|
171
|
+
}, previewUrl),
|
172
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
|
173
|
+
variant: "tertiary",
|
174
|
+
label: formatMessage(isSideEditorOpen ? {
|
175
|
+
id: 'content-manager.preview.content.close-editor',
|
176
|
+
defaultMessage: 'Close editor'
|
177
|
+
} : {
|
178
|
+
id: 'content-manager.preview.content.open-editor',
|
179
|
+
defaultMessage: 'Open editor'
|
180
|
+
}),
|
181
|
+
onClick: ()=>setIsSideEditorOpen((prev)=>!prev),
|
182
|
+
position: "absolute",
|
183
|
+
top: 2,
|
184
|
+
left: 2,
|
185
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(AnimatedArrow, {
|
186
|
+
isSideEditorOpen: isSideEditorOpen
|
187
|
+
})
|
188
|
+
})
|
189
|
+
]
|
190
|
+
})
|
154
191
|
]
|
155
192
|
});
|
156
193
|
};
|
@@ -250,42 +287,44 @@ const PreviewTabs = ()=>{
|
|
250
287
|
if (!hasDraftAndPublish) {
|
251
288
|
return null;
|
252
289
|
}
|
253
|
-
return /*#__PURE__*/ jsxRuntime.jsx(
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
290
|
+
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Tabs.Root, {
|
291
|
+
variant: "simple",
|
292
|
+
value: query.status || 'draft',
|
293
|
+
onValueChange: handleTabChange,
|
294
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Tabs.List, {
|
295
|
+
"aria-label": formatMessage({
|
296
|
+
id: 'preview.tabs.label',
|
297
|
+
defaultMessage: 'Document status'
|
298
|
+
}),
|
299
|
+
children: [
|
300
|
+
/*#__PURE__*/ jsxRuntime.jsx(StatusTab, {
|
301
|
+
value: "draft",
|
302
|
+
children: formatMessage({
|
303
|
+
id: 'content-manager.containers.List.draft',
|
304
|
+
defaultMessage: 'draft'
|
305
|
+
})
|
262
306
|
}),
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
})
|
270
|
-
}),
|
271
|
-
/*#__PURE__*/ jsxRuntime.jsx(StatusTab, {
|
272
|
-
value: "published",
|
273
|
-
disabled: documentStatus === 'draft',
|
274
|
-
children: formatMessage({
|
275
|
-
id: 'content-manager.containers.List.published',
|
276
|
-
defaultMessage: 'published'
|
277
|
-
})
|
307
|
+
/*#__PURE__*/ jsxRuntime.jsx(StatusTab, {
|
308
|
+
value: "published",
|
309
|
+
disabled: documentStatus === 'draft',
|
310
|
+
children: formatMessage({
|
311
|
+
id: 'content-manager.containers.List.published',
|
312
|
+
defaultMessage: 'published'
|
278
313
|
})
|
279
|
-
|
280
|
-
|
314
|
+
})
|
315
|
+
]
|
281
316
|
})
|
282
317
|
});
|
283
318
|
};
|
284
319
|
/* -------------------------------------------------------------------------------------------------
|
285
320
|
* PreviewHeader
|
286
321
|
* -----------------------------------------------------------------------------------------------*/ const UnstablePreviewHeader = ()=>{
|
287
|
-
// Get the document title
|
288
322
|
const title = usePreviewContext('PreviewHeader', (state)=>state.title);
|
323
|
+
const document = usePreviewContext('PreviewHeader', (state)=>state.document);
|
324
|
+
const schema = usePreviewContext('PreviewHeader', (state)=>state.schema);
|
325
|
+
const meta = usePreviewContext('PreviewHeader', (state)=>state.meta);
|
326
|
+
const plugins = strapiAdmin.useStrapiApp('PreviewHeader', (state)=>state.plugins);
|
327
|
+
const [{ query }] = strapiAdmin.useQueryParams();
|
289
328
|
const { formatMessage } = reactIntl.useIntl();
|
290
329
|
const { toggleNotification } = strapiAdmin.useNotification();
|
291
330
|
const { copy } = strapiAdmin.useClipboard();
|
@@ -299,7 +338,17 @@ const PreviewTabs = ()=>{
|
|
299
338
|
type: 'success'
|
300
339
|
});
|
301
340
|
};
|
341
|
+
const hasDraftAndPublish = schema.options?.draftAndPublish ?? false;
|
342
|
+
const props = {
|
343
|
+
activeTab: query.status ?? null,
|
344
|
+
collectionType: schema.kind === 'collectionType' ? 'collection-types' : 'single-types',
|
345
|
+
model: schema.uid,
|
346
|
+
documentId: document.documentId,
|
347
|
+
document,
|
348
|
+
meta
|
349
|
+
};
|
302
350
|
return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
351
|
+
height: "48px",
|
303
352
|
gap: 4,
|
304
353
|
background: "neutral0",
|
305
354
|
borderColor: "neutral150",
|
@@ -327,17 +376,60 @@ const PreviewTabs = ()=>{
|
|
327
376
|
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
328
377
|
flex: 1,
|
329
378
|
paddingRight: 2,
|
330
|
-
|
379
|
+
gap: 2,
|
380
|
+
justifyContent: hasDraftAndPublish ? 'space-between' : 'flex-end',
|
331
381
|
children: [
|
332
|
-
/*#__PURE__*/ jsxRuntime.jsx(
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
382
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
383
|
+
flex: "1 1 70%",
|
384
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(PreviewTabs, {})
|
385
|
+
}),
|
386
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
387
|
+
gap: 2,
|
388
|
+
children: [
|
389
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
|
390
|
+
type: "button",
|
391
|
+
label: formatMessage({
|
392
|
+
id: 'preview.copy.label',
|
393
|
+
defaultMessage: 'Copy preview link'
|
394
|
+
}),
|
395
|
+
onClick: handleCopyLink,
|
396
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(Icons.Link, {})
|
397
|
+
}),
|
398
|
+
/*#__PURE__*/ jsxRuntime.jsx(index.InjectionZone, {
|
399
|
+
area: "preview.actions"
|
400
|
+
}),
|
401
|
+
/*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.DescriptionComponentRenderer, {
|
402
|
+
props: props,
|
403
|
+
descriptions: plugins['content-manager'].apis.getDocumentActions('preview'),
|
404
|
+
children: (actions)=>{
|
405
|
+
const filteredActions = actions.filter((action)=>[
|
406
|
+
action.position
|
407
|
+
].flat().includes('preview'));
|
408
|
+
const [primaryAction, secondaryAction] = filteredActions;
|
409
|
+
if (!primaryAction && !secondaryAction) return null;
|
410
|
+
// Both actions are available when draft and publish enabled
|
411
|
+
if (primaryAction && secondaryAction) {
|
412
|
+
return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
413
|
+
children: [
|
414
|
+
/*#__PURE__*/ jsxRuntime.jsx(index.DocumentActionButton, {
|
415
|
+
...secondaryAction,
|
416
|
+
variant: secondaryAction.variant || 'secondary'
|
417
|
+
}),
|
418
|
+
/*#__PURE__*/ jsxRuntime.jsx(index.DocumentActionButton, {
|
419
|
+
...primaryAction,
|
420
|
+
variant: primaryAction.variant || 'default'
|
421
|
+
})
|
422
|
+
]
|
423
|
+
});
|
424
|
+
}
|
425
|
+
// Otherwise we just have the save action
|
426
|
+
return /*#__PURE__*/ jsxRuntime.jsx(index.DocumentActionButton, {
|
427
|
+
...primaryAction,
|
428
|
+
variant: primaryAction.variant || 'secondary'
|
429
|
+
});
|
430
|
+
}
|
431
|
+
})
|
432
|
+
]
|
341
433
|
})
|
342
434
|
]
|
343
435
|
})
|
@@ -428,6 +520,7 @@ const [PreviewProvider, usePreviewContext] = strapiAdmin.createContext('PreviewP
|
|
428
520
|
/* -------------------------------------------------------------------------------------------------
|
429
521
|
* PreviewPage
|
430
522
|
* -----------------------------------------------------------------------------------------------*/ const PreviewPage = ()=>{
|
523
|
+
const location = reactRouterDom.useLocation();
|
431
524
|
const { formatMessage } = reactIntl.useIntl();
|
432
525
|
// Read all the necessary data from the URL to find the right preview URL
|
433
526
|
const { slug: model, id: documentId, collectionType } = reactRouterDom.useParams();
|
@@ -465,13 +558,23 @@ const [PreviewProvider, usePreviewContext] = strapiAdmin.createContext('PreviewP
|
|
465
558
|
if (documentResponse.isLoading || previewUrlResponse.isLoading || documentLayoutResponse.isLoading) {
|
466
559
|
return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
|
467
560
|
}
|
468
|
-
|
561
|
+
const initialValues = documentResponse.getInitialFormValues();
|
562
|
+
if (previewUrlResponse.error || documentLayoutResponse.error || !documentResponse.document || !documentResponse.meta || !documentResponse.schema || !initialValues) {
|
469
563
|
return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Error, {});
|
470
564
|
}
|
471
565
|
if (!previewUrlResponse.data?.data?.url) {
|
472
566
|
return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.NoData, {});
|
473
567
|
}
|
474
568
|
const documentTitle = documentResponse.getTitle(documentLayoutResponse.edit.settings.mainField);
|
569
|
+
const validateSync = (values, options)=>{
|
570
|
+
const yupSchema = index.createYupSchema(documentResponse.schema?.attributes, documentResponse.components, {
|
571
|
+
status: documentResponse.document?.status,
|
572
|
+
...options
|
573
|
+
});
|
574
|
+
return yupSchema.validateSync(values, {
|
575
|
+
abortEarly: false
|
576
|
+
});
|
577
|
+
};
|
475
578
|
return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
476
579
|
children: [
|
477
580
|
/*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Title, {
|
@@ -490,9 +593,20 @@ const [PreviewProvider, usePreviewContext] = strapiAdmin.createContext('PreviewP
|
|
490
593
|
schema: documentResponse.schema,
|
491
594
|
layout: documentLayoutResponse.edit,
|
492
595
|
children: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Form, {
|
493
|
-
method: "
|
494
|
-
|
596
|
+
method: "PUT",
|
597
|
+
disabled: query.status === 'published' && documentResponse && documentResponse.document.status === 'published',
|
598
|
+
initialValues: documentResponse.getInitialFormValues(),
|
599
|
+
initialErrors: location?.state?.forceValidation ? validateSync(initialValues, {}) : {},
|
495
600
|
height: "100%",
|
601
|
+
validate: (values, options)=>{
|
602
|
+
const yupSchema = index.createYupSchema(documentResponse.schema?.attributes, documentResponse.components, {
|
603
|
+
status: documentResponse.document?.status,
|
604
|
+
...options
|
605
|
+
});
|
606
|
+
return yupSchema.validate(values, {
|
607
|
+
abortEarly: false
|
608
|
+
});
|
609
|
+
},
|
496
610
|
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
497
611
|
direction: "column",
|
498
612
|
height: "100%",
|
@@ -526,6 +640,10 @@ const [PreviewProvider, usePreviewContext] = strapiAdmin.createContext('PreviewP
|
|
526
640
|
{
|
527
641
|
action: 'plugin::content-manager.explorer.update',
|
528
642
|
subject: model
|
643
|
+
},
|
644
|
+
{
|
645
|
+
action: 'plugin::content-manager.explorer.publish',
|
646
|
+
subject: model
|
529
647
|
}
|
530
648
|
]);
|
531
649
|
if (isLoading) {
|
@@ -570,4 +688,4 @@ const ProtectedPreviewPage = ()=>{
|
|
570
688
|
|
571
689
|
exports.ProtectedPreviewPage = ProtectedPreviewPage;
|
572
690
|
exports.usePreviewContext = usePreviewContext;
|
573
|
-
//# sourceMappingURL=Preview-
|
691
|
+
//# sourceMappingURL=Preview-CMoqDEKI.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Preview-CMoqDEKI.js","sources":["../../../admin/src/preview/components/PreviewContent.tsx","../../../admin/src/preview/components/PreviewHeader.tsx","../../../admin/src/preview/pages/Preview.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, IconButton } from '@strapi/design-system';\nimport { ArrowLeft } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { FormLayout } from '../../pages/EditView/components/FormLayout';\nimport { usePreviewContext } from '../pages/Preview';\n\n// TODO use ArrowLineLeft once it's available in the DS\nconst AnimatedArrow = styled(ArrowLeft)<{ isSideEditorOpen: boolean }>`\n will-change: transform;\n rotate: ${(props) => (props.isSideEditorOpen ? '0deg' : '180deg')};\n transition: rotate 0.2s ease-in-out;\n`;\n\nconst UnstablePreviewContent = () => {\n const previewUrl = usePreviewContext('PreviewContent', (state) => state.url);\n const layout = usePreviewContext('PreviewContent', (state) => state.layout);\n\n const { formatMessage } = useIntl();\n\n const [isSideEditorOpen, setIsSideEditorOpen] = React.useState(true);\n\n return (\n <Flex flex={1} overflow=\"auto\" alignItems=\"stretch\">\n <Box\n overflow=\"auto\"\n width={isSideEditorOpen ? '50%' : 0}\n borderWidth=\"0 1px 0 0\"\n borderColor=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n // Remove horizontal padding when the editor is closed or it won't fully disappear\n paddingLeft={isSideEditorOpen ? 6 : 0}\n paddingRight={isSideEditorOpen ? 6 : 0}\n transition=\"all 0.2s ease-in-out\"\n >\n <FormLayout layout={layout.layout} hasBackground />\n </Box>\n <Box position=\"relative\" flex={1} height=\"100%\" overflow=\"hidden\">\n <Box\n src={previewUrl}\n /**\n * For some reason, changing an iframe's src tag causes the browser to add a new item in the\n * history stack. This is an issue for us as it means clicking the back button will not let us\n * go back to the edit view. To fix it, we need to trick the browser into thinking this is a\n * different iframe when the preview URL changes. So we set a key prop to force React\n * to mount a different node when the src changes.\n */\n key={previewUrl}\n title={formatMessage({\n id: 'content-manager.preview.panel.title',\n defaultMessage: 'Preview',\n })}\n width=\"100%\"\n height=\"100%\"\n borderWidth={0}\n tag=\"iframe\"\n />\n <IconButton\n variant=\"tertiary\"\n label={formatMessage(\n isSideEditorOpen\n ? {\n id: 'content-manager.preview.content.close-editor',\n defaultMessage: 'Close editor',\n }\n : {\n id: 'content-manager.preview.content.open-editor',\n defaultMessage: 'Open editor',\n }\n )}\n onClick={() => setIsSideEditorOpen((prev) => !prev)}\n position=\"absolute\"\n top={2}\n left={2}\n >\n <AnimatedArrow isSideEditorOpen={isSideEditorOpen} />\n </IconButton>\n </Box>\n </Flex>\n );\n};\n\nconst PreviewContent = () => {\n const previewUrl = usePreviewContext('PreviewContent', (state) => state.url);\n\n const { formatMessage } = useIntl();\n\n return (\n <Box\n src={previewUrl}\n /**\n * For some reason, changing an iframe's src tag causes the browser to add a new item in the\n * history stack. This is an issue for us as it means clicking the back button will not let us\n * go back to the edit view. To fix it, we need to trick the browser into thinking this is a\n * different iframe when the preview URL changes. So we set a key prop to force React\n * to mount a different node when the src changes.\n */\n key={previewUrl}\n title={formatMessage({\n id: 'content-manager.preview.panel.title',\n defaultMessage: 'Preview',\n })}\n width=\"100%\"\n height=\"100%\"\n borderWidth={0}\n tag=\"iframe\"\n />\n );\n};\n\nexport { PreviewContent, UnstablePreviewContent };\n","import * as React from 'react';\n\nimport {\n DescriptionComponentRenderer,\n useClipboard,\n useHistory,\n useNotification,\n useQueryParams,\n useStrapiApp,\n} from '@strapi/admin/strapi-admin';\nimport { IconButton, Tabs, Typography, Grid, Flex } from '@strapi/design-system';\nimport { Cross, Link as LinkIcon } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link, type To } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { InjectionZone } from '../../components/InjectionZone';\nimport { DocumentActionButton } from '../../pages/EditView/components/DocumentActions';\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport { getDocumentStatus } from '../../pages/EditView/EditViewPage';\nimport { usePreviewContext } from '../pages/Preview';\n\nimport type { ContentManagerPlugin, DocumentActionProps } from '../../content-manager';\n\n/* -------------------------------------------------------------------------------------------------\n * ClosePreviewButton\n * -----------------------------------------------------------------------------------------------*/\n\nconst ClosePreviewButton = () => {\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n }>();\n const { formatMessage } = useIntl();\n\n const canGoBack = useHistory('BackButton', (state) => state.canGoBack);\n const goBack = useHistory('BackButton', (state) => state.goBack);\n const history = useHistory('BackButton', (state) => state.history);\n const locationIndex = useHistory('BackButton', (state) => state.currentLocationIndex);\n\n /**\n * Get the link destination from the history.\n * Rely on a fallback (the parent edit view page) if there's no page to go back .\n */\n const historyTo = canGoBack ? history.at(locationIndex - 2) : undefined;\n const fallback = {\n pathname: '..',\n search: stringify(query, { encode: false }),\n } satisfies To;\n const toWithFallback = historyTo ?? fallback;\n\n const handleClick = (e: React.MouseEvent) => {\n if (canGoBack) {\n // Prevent normal link behavior, go back in the history stack instead\n e.preventDefault();\n goBack();\n return;\n }\n\n // Otherwise rely on native link behavior to go back to the edit view. We don't use navigate()\n // here in order to get the relative=\"path\" functionality from the Link component.\n };\n\n return (\n <IconButton\n variant=\"ghost\"\n tag={Link}\n relative=\"path\"\n to={toWithFallback}\n onClick={handleClick}\n label={formatMessage({\n id: 'content-manager.preview.header.close',\n defaultMessage: 'Close preview',\n })}\n >\n <Cross />\n </IconButton>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Status\n * -----------------------------------------------------------------------------------------------*/\n\nconst Status = () => {\n // Get status\n const document = usePreviewContext('PreviewHeader', (state) => state.document);\n const schema = usePreviewContext('PreviewHeader', (state) => state.schema);\n const meta = usePreviewContext('PreviewHeader', (state) => state.meta);\n const hasDraftAndPublished = schema?.options?.draftAndPublish ?? false;\n\n if (!hasDraftAndPublished) {\n return null;\n }\n\n const status = getDocumentStatus(document, meta);\n\n return <DocumentStatus status={status} size=\"XS\" />;\n};\n\nconst PreviewTabs = () => {\n const { formatMessage } = useIntl();\n\n // URL query params\n const [{ query }, setQuery] = useQueryParams<{ status: 'draft' | 'published' }>();\n\n // Get status\n const document = usePreviewContext('PreviewHeader', (state) => state.document);\n const schema = usePreviewContext('PreviewHeader', (state) => state.schema);\n const meta = usePreviewContext('PreviewHeader', (state) => state.meta);\n const hasDraftAndPublish = schema?.options?.draftAndPublish ?? false;\n const documentStatus = getDocumentStatus(document, meta);\n\n const handleTabChange = (status: string) => {\n if (status === 'published' || status === 'draft') {\n setQuery({ status }, 'push', true);\n }\n };\n\n if (!hasDraftAndPublish) {\n return null;\n }\n\n return (\n <Tabs.Root variant=\"simple\" value={query.status || 'draft'} onValueChange={handleTabChange}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'preview.tabs.label',\n defaultMessage: 'Document status',\n })}\n >\n <StatusTab value=\"draft\">\n {formatMessage({\n id: 'content-manager.containers.List.draft',\n defaultMessage: 'draft',\n })}\n </StatusTab>\n <StatusTab value=\"published\" disabled={documentStatus === 'draft'}>\n {formatMessage({\n id: 'content-manager.containers.List.published',\n defaultMessage: 'published',\n })}\n </StatusTab>\n </Tabs.List>\n </Tabs.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewHeader\n * -----------------------------------------------------------------------------------------------*/\n\nconst UnstablePreviewHeader = () => {\n const title = usePreviewContext('PreviewHeader', (state) => state.title);\n const document = usePreviewContext('PreviewHeader', (state) => state.document);\n const schema = usePreviewContext('PreviewHeader', (state) => state.schema);\n const meta = usePreviewContext('PreviewHeader', (state) => state.meta);\n const plugins = useStrapiApp('PreviewHeader', (state) => state.plugins);\n\n const [{ query }] = useQueryParams<{\n status?: 'draft' | 'published';\n }>();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { copy } = useClipboard();\n\n const handleCopyLink = () => {\n copy(window.location.href);\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.preview.copy.success',\n defaultMessage: 'Copied preview link',\n }),\n type: 'success',\n });\n };\n\n const hasDraftAndPublish = schema.options?.draftAndPublish ?? false;\n const props = {\n activeTab: query.status ?? null,\n collectionType: schema.kind === 'collectionType' ? 'collection-types' : 'single-types',\n model: schema.uid,\n documentId: document.documentId,\n document,\n meta,\n } satisfies DocumentActionProps;\n\n return (\n <Flex height=\"48px\" gap={4} background=\"neutral0\" borderColor=\"neutral150\" tag=\"header\">\n {/* Title and status */}\n <TitleContainer height=\"100%\" paddingLeft={2} paddingRight={4}>\n <ClosePreviewButton />\n <PreviewTitle\n tag=\"h1\"\n title={title}\n maxWidth=\"200px\"\n fontSize={2}\n paddingLeft={2}\n paddingRight={3}\n fontWeight={600}\n >\n {title}\n </PreviewTitle>\n <Status />\n </TitleContainer>\n\n {/* Tabs and actions */}\n <Flex\n flex={1}\n paddingRight={2}\n gap={2}\n justifyContent={hasDraftAndPublish ? 'space-between' : 'flex-end'}\n >\n <Flex flex=\"1 1 70%\">\n <PreviewTabs />\n </Flex>\n <Flex gap={2}>\n <IconButton\n type=\"button\"\n label={formatMessage({\n id: 'preview.copy.label',\n defaultMessage: 'Copy preview link',\n })}\n onClick={handleCopyLink}\n >\n <LinkIcon />\n </IconButton>\n <InjectionZone area=\"preview.actions\" />\n <DescriptionComponentRenderer\n props={props}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('preview')}\n >\n {(actions) => {\n const filteredActions = actions.filter((action) =>\n [action.position].flat().includes('preview')\n );\n const [primaryAction, secondaryAction] = filteredActions;\n\n if (!primaryAction && !secondaryAction) return null;\n\n // Both actions are available when draft and publish enabled\n if (primaryAction && secondaryAction) {\n return (\n <>\n {/* Save */}\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n {/* Publish */}\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'default'}\n />\n </>\n );\n }\n\n // Otherwise we just have the save action\n return (\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'secondary'}\n />\n );\n }}\n </DescriptionComponentRenderer>\n </Flex>\n </Flex>\n </Flex>\n );\n};\n\nconst PreviewHeader = () => {\n // Get the document title\n const title = usePreviewContext('PreviewHeader', (state) => state.title);\n\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { copy } = useClipboard();\n\n const handleCopyLink = () => {\n copy(window.location.href);\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.preview.copy.success',\n defaultMessage: 'Copied preview link',\n }),\n type: 'success',\n });\n };\n\n return (\n <Grid.Root\n gap={3}\n gridCols={3}\n paddingLeft={2}\n paddingRight={2}\n background=\"neutral0\"\n borderColor=\"neutral150\"\n tag=\"header\"\n >\n {/* Title and status */}\n <Grid.Item xs={1} paddingTop={2} paddingBottom={2} gap={3}>\n <ClosePreviewButton />\n <PreviewTitle tag=\"h1\" fontWeight={600} fontSize={2} maxWidth=\"200px\" title={title}>\n {title}\n </PreviewTitle>\n <Status />\n </Grid.Item>\n {/* Tabs */}\n <Grid.Item xs={1} marginBottom=\"-1px\" alignItems=\"end\" margin=\"auto\">\n <PreviewTabs />\n </Grid.Item>\n {/* Copy link */}\n <Grid.Item xs={1} justifyContent=\"end\" paddingTop={2} paddingBottom={2}>\n <IconButton\n type=\"button\"\n label={formatMessage({\n id: 'preview.copy.label',\n defaultMessage: 'Copy preview link',\n })}\n onClick={handleCopyLink}\n >\n <LinkIcon />\n </IconButton>\n </Grid.Item>\n </Grid.Root>\n );\n};\n\nconst PreviewTitle = styled(Typography)`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst StatusTab = styled(Tabs.Trigger)`\n text-transform: uppercase;\n`;\n\nconst TitleContainer = styled(Flex)`\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nexport { PreviewHeader, UnstablePreviewHeader };\n","import * as React from 'react';\n\nimport {\n Page,\n useQueryParams,\n useRBAC,\n createContext,\n Form as FormContext,\n} from '@strapi/admin/strapi-admin';\nimport { Box, Flex, FocusTrap, Portal } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useParams } from 'react-router-dom';\n\nimport { GetPreviewUrl } from '../../../../shared/contracts/preview';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { DocumentRBAC } from '../../features/DocumentRBAC';\nimport { type UseDocument, useDocument } from '../../hooks/useDocument';\nimport { type EditLayout, useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { buildValidParams } from '../../utils/api';\nimport { createYupSchema } from '../../utils/validation';\nimport { PreviewContent, UnstablePreviewContent } from '../components/PreviewContent';\nimport { PreviewHeader, UnstablePreviewHeader } from '../components/PreviewHeader';\nimport { useGetPreviewUrlQuery } from '../services/preview';\n\nimport type { UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PreviewContextValue {\n url: string;\n title: string;\n document: NonNullable<ReturnType<UseDocument>['document']>;\n meta: NonNullable<ReturnType<UseDocument>['meta']>;\n schema: NonNullable<ReturnType<UseDocument>['schema']>;\n layout: EditLayout;\n}\n\nconst [PreviewProvider, usePreviewContext] = createContext<PreviewContextValue>('PreviewPage');\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst PreviewPage = () => {\n const location = useLocation();\n const { formatMessage } = useIntl();\n\n // Read all the necessary data from the URL to find the right preview URL\n const {\n slug: model,\n id: documentId,\n collectionType,\n } = useParams<{\n slug: UID.ContentType;\n id: string;\n collectionType: string;\n }>();\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n status?: string;\n }>();\n\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n if (!collectionType) {\n throw new Error('Could not find collectionType in url params');\n }\n\n if (!model) {\n throw new Error('Could not find model in url params');\n }\n\n // Only collection types must have a documentId\n if (collectionType === COLLECTION_TYPES && !documentId) {\n throw new Error('Could not find documentId in url params');\n }\n\n const previewUrlResponse = useGetPreviewUrlQuery({\n params: {\n contentType: model,\n },\n query: {\n documentId,\n locale: params.locale,\n status: params.status as GetPreviewUrl.Request['query']['status'],\n },\n });\n\n const documentResponse = useDocument({\n model,\n collectionType,\n documentId,\n params,\n });\n\n const documentLayoutResponse = useDocumentLayout(model);\n\n if (\n documentResponse.isLoading ||\n previewUrlResponse.isLoading ||\n documentLayoutResponse.isLoading\n ) {\n return <Page.Loading />;\n }\n\n const initialValues = documentResponse.getInitialFormValues();\n\n if (\n previewUrlResponse.error ||\n documentLayoutResponse.error ||\n !documentResponse.document ||\n !documentResponse.meta ||\n !documentResponse.schema ||\n !initialValues\n ) {\n return <Page.Error />;\n }\n\n if (!previewUrlResponse.data?.data?.url) {\n return <Page.NoData />;\n }\n\n const documentTitle = documentResponse.getTitle(documentLayoutResponse.edit.settings.mainField);\n\n const validateSync = (values: Record<string, unknown>, options: Record<string, string>) => {\n const yupSchema = createYupSchema(\n documentResponse.schema?.attributes,\n documentResponse.components,\n {\n status: documentResponse.document?.status,\n ...options,\n }\n );\n\n return yupSchema.validateSync(values, { abortEarly: false });\n };\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n {\n id: 'content-manager.preview.page-title',\n defaultMessage: '{contentType} preview',\n },\n {\n contentType: documentTitle,\n }\n )}\n </Page.Title>\n <PreviewProvider\n url={previewUrlResponse.data.data.url}\n document={documentResponse.document}\n title={documentTitle}\n meta={documentResponse.meta}\n schema={documentResponse.schema}\n layout={documentLayoutResponse.edit}\n >\n <FormContext\n method=\"PUT\"\n disabled={\n query.status === 'published' &&\n documentResponse &&\n documentResponse.document.status === 'published'\n }\n initialValues={documentResponse.getInitialFormValues()}\n initialErrors={location?.state?.forceValidation ? validateSync(initialValues, {}) : {}}\n height=\"100%\"\n validate={(values: Record<string, unknown>, options: Record<string, string>) => {\n const yupSchema = createYupSchema(\n documentResponse.schema?.attributes,\n documentResponse.components,\n {\n status: documentResponse.document?.status,\n ...options,\n }\n );\n\n return yupSchema.validate(values, { abortEarly: false });\n }}\n >\n <Flex direction=\"column\" height=\"100%\" alignItems=\"stretch\">\n {window.strapi.future.isEnabled('unstablePreviewSideEditor') ? (\n <>\n <UnstablePreviewHeader />\n <UnstablePreviewContent />\n </>\n ) : (\n <>\n <PreviewHeader />\n <PreviewContent />\n </>\n )}\n </Flex>\n </FormContext>\n </PreviewProvider>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedPreviewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedPreviewPageImpl = () => {\n const { slug: model } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC([\n { action: 'plugin::content-manager.explorer.read', subject: model },\n { action: 'plugin::content-manager.explorer.update', subject: model },\n { action: 'plugin::content-manager.explorer.publish', subject: model },\n ]);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !model) {\n return (\n <Box\n height=\"100vh\"\n width=\"100vw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={2}\n background=\"neutral0\"\n >\n <Page.Error />\n </Box>\n );\n }\n\n return (\n <Box\n height=\"100vh\"\n width=\"100vw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={2}\n background=\"neutral0\"\n >\n <Page.Protect\n permissions={permissions.filter((permission) =>\n permission.action.includes('explorer.read')\n )}\n >\n <DocumentRBAC permissions={permissions}>\n <PreviewPage />\n </DocumentRBAC>\n </Page.Protect>\n </Box>\n );\n};\n\nconst ProtectedPreviewPage = () => {\n return (\n <Portal>\n <FocusTrap>\n <ProtectedPreviewPageImpl />\n </FocusTrap>\n </Portal>\n );\n};\n\nexport { ProtectedPreviewPage, usePreviewContext };\n"],"names":["AnimatedArrow","styled","ArrowLeft","props","isSideEditorOpen","UnstablePreviewContent","previewUrl","usePreviewContext","state","url","layout","formatMessage","useIntl","setIsSideEditorOpen","React","useState","_jsxs","Flex","flex","overflow","alignItems","_jsx","Box","width","borderWidth","borderColor","paddingTop","paddingBottom","paddingLeft","paddingRight","transition","FormLayout","hasBackground","position","height","src","title","id","defaultMessage","tag","IconButton","variant","label","onClick","prev","top","left","PreviewContent","ClosePreviewButton","query","useQueryParams","canGoBack","useHistory","goBack","history","locationIndex","currentLocationIndex","historyTo","at","undefined","fallback","pathname","search","stringify","encode","toWithFallback","handleClick","e","preventDefault","Link","relative","to","Cross","Status","document","schema","meta","hasDraftAndPublished","options","draftAndPublish","status","getDocumentStatus","DocumentStatus","size","PreviewTabs","setQuery","hasDraftAndPublish","documentStatus","handleTabChange","Tabs","Root","value","onValueChange","List","aria-label","StatusTab","disabled","UnstablePreviewHeader","plugins","useStrapiApp","toggleNotification","useNotification","copy","useClipboard","handleCopyLink","window","location","href","message","type","activeTab","collectionType","kind","model","uid","documentId","gap","background","TitleContainer","PreviewTitle","maxWidth","fontSize","fontWeight","justifyContent","LinkIcon","InjectionZone","area","DescriptionComponentRenderer","descriptions","apis","getDocumentActions","actions","filteredActions","filter","action","flat","includes","primaryAction","secondaryAction","_Fragment","DocumentActionButton","PreviewHeader","Grid","gridCols","Item","xs","marginBottom","margin","Typography","Trigger","theme","colors","neutral150","PreviewProvider","createContext","PreviewPage","useLocation","slug","useParams","params","useMemo","buildValidParams","Error","COLLECTION_TYPES","previewUrlResponse","useGetPreviewUrlQuery","contentType","locale","documentResponse","useDocument","documentLayoutResponse","useDocumentLayout","isLoading","Page","Loading","initialValues","getInitialFormValues","error","data","NoData","documentTitle","getTitle","edit","settings","mainField","validateSync","values","yupSchema","createYupSchema","attributes","components","abortEarly","Title","FormContext","method","initialErrors","forceValidation","validate","direction","strapi","future","isEnabled","ProtectedPreviewPageImpl","permissions","useRBAC","subject","zIndex","Protect","permission","DocumentRBAC","ProtectedPreviewPage","Portal","FocusTrap"],"mappings":"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"}
|