@strapi/content-manager 5.22.0 → 5.23.1
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/components/LeftMenu.js +13 -15
- package/dist/admin/components/LeftMenu.js.map +1 -1
- package/dist/admin/components/LeftMenu.mjs +14 -16
- package/dist/admin/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/components/Widgets.js +15 -7
- package/dist/admin/components/Widgets.js.map +1 -1
- package/dist/admin/components/Widgets.mjs +15 -7
- package/dist/admin/components/Widgets.mjs.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.js +11 -16
- package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.mjs +12 -17
- package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/Blocker.js +18 -0
- package/dist/admin/pages/EditView/components/Blocker.js.map +1 -0
- package/dist/admin/pages/EditView/components/Blocker.mjs +16 -0
- package/dist/admin/pages/EditView/components/Blocker.mjs.map +1 -0
- package/dist/admin/pages/EditView/components/DocumentActions.js +16 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +17 -2
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.js +15 -5
- package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.mjs +15 -5
- package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
- package/dist/admin/pages/EditView/utils/data.js +26 -7
- package/dist/admin/pages/EditView/utils/data.js.map +1 -1
- package/dist/admin/pages/EditView/utils/data.mjs +26 -7
- package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.js +6 -2
- package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.mjs +6 -2
- package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
- package/dist/admin/preview/components/InputPopover.js +73 -0
- package/dist/admin/preview/components/InputPopover.js.map +1 -0
- package/dist/admin/preview/components/InputPopover.mjs +70 -0
- package/dist/admin/preview/components/InputPopover.mjs.map +1 -0
- package/dist/admin/preview/hooks/usePreviewInputManager.js +67 -0
- package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -0
- package/dist/admin/preview/hooks/usePreviewInputManager.mjs +46 -0
- package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -0
- package/dist/admin/preview/pages/Preview.js +119 -118
- package/dist/admin/preview/pages/Preview.js.map +1 -1
- package/dist/admin/preview/pages/Preview.mjs +120 -119
- package/dist/admin/preview/pages/Preview.mjs.map +1 -1
- package/dist/admin/preview/utils/constants.js +2 -1
- package/dist/admin/preview/utils/constants.js.map +1 -1
- package/dist/admin/preview/utils/constants.mjs +2 -2
- package/dist/admin/preview/utils/constants.mjs.map +1 -1
- package/dist/admin/preview/utils/getSendMessage.js +22 -0
- package/dist/admin/preview/utils/getSendMessage.js.map +1 -0
- package/dist/admin/preview/utils/getSendMessage.mjs +20 -0
- package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -0
- package/dist/admin/preview/utils/previewScript.js +272 -4
- package/dist/admin/preview/utils/previewScript.js.map +1 -1
- package/dist/admin/preview/utils/previewScript.mjs +272 -4
- package/dist/admin/preview/utils/previewScript.mjs.map +1 -1
- package/dist/admin/services/documents.js +0 -1
- package/dist/admin/services/documents.js.map +1 -1
- package/dist/admin/services/documents.mjs +0 -1
- package/dist/admin/services/documents.mjs.map +1 -1
- package/dist/admin/src/pages/EditView/components/Blocker.d.ts +5 -0
- package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +1 -1
- package/dist/admin/src/preview/components/InputPopover.d.ts +6 -0
- package/dist/admin/src/preview/hooks/usePreviewInputManager.d.ts +4 -0
- package/dist/admin/src/preview/pages/Preview.d.ts +8 -0
- package/dist/admin/src/preview/utils/constants.d.ts +4 -1
- package/dist/admin/src/preview/utils/getSendMessage.d.ts +11 -0
- package/dist/admin/src/preview/utils/previewScript.d.ts +7 -1
- package/dist/admin/translations/en.json.js +1 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +1 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/es.json.js +1 -0
- package/dist/admin/translations/es.json.js.map +1 -1
- package/dist/admin/translations/es.json.mjs +1 -0
- package/dist/admin/translations/es.json.mjs.map +1 -1
- package/dist/admin/translations/fr.json.js +1 -0
- package/dist/admin/translations/fr.json.js.map +1 -1
- package/dist/admin/translations/fr.json.mjs +1 -0
- package/dist/admin/translations/fr.json.mjs.map +1 -1
- package/dist/server/homepage/services/homepage.js +2 -2
- package/dist/server/homepage/services/homepage.js.map +1 -1
- package/dist/server/homepage/services/homepage.mjs +2 -2
- package/dist/server/homepage/services/homepage.mjs.map +1 -1
- package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
- package/package.json +5 -5
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"InputPopover.js","sources":["../../../../admin/src/preview/components/InputPopover.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { createContext } from '@strapi/admin/strapi-admin';\nimport { Box, Popover } from '@strapi/design-system';\n\nimport { type UseDocument } from '../../hooks/useDocument';\nimport { InputRenderer } from '../../pages/EditView/components/InputRenderer';\nimport { usePreviewContext } from '../pages/Preview';\n\n/**\n * No need for actual data in the context. It's just to let children check if they're rendered\n * inside of a preview InputPopover without relying on prop drilling.\n */\ninterface InputPopoverContextValue {}\n\nconst [InputPopoverProvider, useInputPopoverContext] =\n createContext<InputPopoverContextValue>('InputPopover');\n\nconst InputPopover = ({ documentResponse }: { documentResponse: ReturnType<UseDocument> }) => {\n const iframeRef = usePreviewContext('VisualEditingPopover', (state) => state.iframeRef);\n const popoverField = usePreviewContext('VisualEditingPopover', (state) => state.popoverField);\n const setPopoverField = usePreviewContext(\n 'VisualEditingPopover',\n (state) => state.setPopoverField\n );\n\n if (!popoverField || !documentResponse.schema || !iframeRef.current) {\n return null;\n }\n\n const iframeRect = iframeRef.current.getBoundingClientRect();\n\n return (\n <>\n {/**\n * Overlay an empty div on top of the iframe while the popover is open so it can\n * intercept clicks. Without it, we wouldn't be able to close the popover by clicking outside,\n * because the click would be detected by the iframe window, not by the admin.\n **/}\n <Box\n position={'fixed'}\n top={iframeRect.top + 'px'}\n left={iframeRect.left + 'px'}\n width={iframeRect.width + 'px'}\n height={iframeRect.height + 'px'}\n zIndex={4}\n />\n <InputPopoverProvider>\n <Popover.Root open={true} onOpenChange={(open) => !open && setPopoverField(null)}>\n <Popover.Trigger>\n <Box\n position=\"fixed\"\n width={popoverField.position.width + 'px'}\n height={popoverField.position.height + 'px'}\n top={0}\n left={0}\n transform={`translate(${iframeRect.left + popoverField.position.left}px, ${iframeRect.top + popoverField.position.top}px)`}\n />\n </Popover.Trigger>\n <Popover.Content sideOffset={4}>\n <Box padding={4} width=\"400px\">\n <InputRenderer\n document={documentResponse}\n attribute={documentResponse.schema.attributes[popoverField.path] as any}\n label={popoverField.path}\n name={popoverField.path}\n type={documentResponse.schema.attributes[popoverField.path].type}\n visible={true}\n />\n </Box>\n </Popover.Content>\n </Popover.Root>\n </InputPopoverProvider>\n </>\n );\n};\n\nfunction useHasInputPopoverParent() {\n const context = useInputPopoverContext('useHasInputPopoverParent', () => true, false);\n\n // useContext will return undefined if the called is not wrapped in the provider\n return context !== undefined;\n}\n\nexport { InputPopover, useHasInputPopoverParent };\n"],"names":["InputPopoverProvider","useInputPopoverContext","createContext","InputPopover","documentResponse","iframeRef","usePreviewContext","state","popoverField","setPopoverField","schema","current","iframeRect","getBoundingClientRect","_jsxs","_Fragment","_jsx","Box","position","top","left","width","height","zIndex","Popover","Root","open","onOpenChange","Trigger","transform","Content","sideOffset","padding","InputRenderer","document","attribute","attributes","path","label","name","type","visible","useHasInputPopoverParent","context","undefined"],"mappings":"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"}
|
@@ -0,0 +1,70 @@
|
|
1
|
+
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
2
|
+
import 'react';
|
3
|
+
import { createContext } from '@strapi/admin/strapi-admin';
|
4
|
+
import { Box, Popover } from '@strapi/design-system';
|
5
|
+
import { InputRenderer as MemoizedInputRenderer } from '../../pages/EditView/components/InputRenderer.mjs';
|
6
|
+
import { usePreviewContext } from '../pages/Preview.mjs';
|
7
|
+
|
8
|
+
const [InputPopoverProvider, useInputPopoverContext] = createContext('InputPopover');
|
9
|
+
const InputPopover = ({ documentResponse })=>{
|
10
|
+
const iframeRef = usePreviewContext('VisualEditingPopover', (state)=>state.iframeRef);
|
11
|
+
const popoverField = usePreviewContext('VisualEditingPopover', (state)=>state.popoverField);
|
12
|
+
const setPopoverField = usePreviewContext('VisualEditingPopover', (state)=>state.setPopoverField);
|
13
|
+
if (!popoverField || !documentResponse.schema || !iframeRef.current) {
|
14
|
+
return null;
|
15
|
+
}
|
16
|
+
const iframeRect = iframeRef.current.getBoundingClientRect();
|
17
|
+
return /*#__PURE__*/ jsxs(Fragment, {
|
18
|
+
children: [
|
19
|
+
/*#__PURE__*/ jsx(Box, {
|
20
|
+
position: 'fixed',
|
21
|
+
top: iframeRect.top + 'px',
|
22
|
+
left: iframeRect.left + 'px',
|
23
|
+
width: iframeRect.width + 'px',
|
24
|
+
height: iframeRect.height + 'px',
|
25
|
+
zIndex: 4
|
26
|
+
}),
|
27
|
+
/*#__PURE__*/ jsx(InputPopoverProvider, {
|
28
|
+
children: /*#__PURE__*/ jsxs(Popover.Root, {
|
29
|
+
open: true,
|
30
|
+
onOpenChange: (open)=>!open && setPopoverField(null),
|
31
|
+
children: [
|
32
|
+
/*#__PURE__*/ jsx(Popover.Trigger, {
|
33
|
+
children: /*#__PURE__*/ jsx(Box, {
|
34
|
+
position: "fixed",
|
35
|
+
width: popoverField.position.width + 'px',
|
36
|
+
height: popoverField.position.height + 'px',
|
37
|
+
top: 0,
|
38
|
+
left: 0,
|
39
|
+
transform: `translate(${iframeRect.left + popoverField.position.left}px, ${iframeRect.top + popoverField.position.top}px)`
|
40
|
+
})
|
41
|
+
}),
|
42
|
+
/*#__PURE__*/ jsx(Popover.Content, {
|
43
|
+
sideOffset: 4,
|
44
|
+
children: /*#__PURE__*/ jsx(Box, {
|
45
|
+
padding: 4,
|
46
|
+
width: "400px",
|
47
|
+
children: /*#__PURE__*/ jsx(MemoizedInputRenderer, {
|
48
|
+
document: documentResponse,
|
49
|
+
attribute: documentResponse.schema.attributes[popoverField.path],
|
50
|
+
label: popoverField.path,
|
51
|
+
name: popoverField.path,
|
52
|
+
type: documentResponse.schema.attributes[popoverField.path].type,
|
53
|
+
visible: true
|
54
|
+
})
|
55
|
+
})
|
56
|
+
})
|
57
|
+
]
|
58
|
+
})
|
59
|
+
})
|
60
|
+
]
|
61
|
+
});
|
62
|
+
};
|
63
|
+
function useHasInputPopoverParent() {
|
64
|
+
const context = useInputPopoverContext('useHasInputPopoverParent', ()=>true, false);
|
65
|
+
// useContext will return undefined if the called is not wrapped in the provider
|
66
|
+
return context !== undefined;
|
67
|
+
}
|
68
|
+
|
69
|
+
export { InputPopover, useHasInputPopoverParent };
|
70
|
+
//# sourceMappingURL=InputPopover.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"InputPopover.mjs","sources":["../../../../admin/src/preview/components/InputPopover.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { createContext } from '@strapi/admin/strapi-admin';\nimport { Box, Popover } from '@strapi/design-system';\n\nimport { type UseDocument } from '../../hooks/useDocument';\nimport { InputRenderer } from '../../pages/EditView/components/InputRenderer';\nimport { usePreviewContext } from '../pages/Preview';\n\n/**\n * No need for actual data in the context. It's just to let children check if they're rendered\n * inside of a preview InputPopover without relying on prop drilling.\n */\ninterface InputPopoverContextValue {}\n\nconst [InputPopoverProvider, useInputPopoverContext] =\n createContext<InputPopoverContextValue>('InputPopover');\n\nconst InputPopover = ({ documentResponse }: { documentResponse: ReturnType<UseDocument> }) => {\n const iframeRef = usePreviewContext('VisualEditingPopover', (state) => state.iframeRef);\n const popoverField = usePreviewContext('VisualEditingPopover', (state) => state.popoverField);\n const setPopoverField = usePreviewContext(\n 'VisualEditingPopover',\n (state) => state.setPopoverField\n );\n\n if (!popoverField || !documentResponse.schema || !iframeRef.current) {\n return null;\n }\n\n const iframeRect = iframeRef.current.getBoundingClientRect();\n\n return (\n <>\n {/**\n * Overlay an empty div on top of the iframe while the popover is open so it can\n * intercept clicks. Without it, we wouldn't be able to close the popover by clicking outside,\n * because the click would be detected by the iframe window, not by the admin.\n **/}\n <Box\n position={'fixed'}\n top={iframeRect.top + 'px'}\n left={iframeRect.left + 'px'}\n width={iframeRect.width + 'px'}\n height={iframeRect.height + 'px'}\n zIndex={4}\n />\n <InputPopoverProvider>\n <Popover.Root open={true} onOpenChange={(open) => !open && setPopoverField(null)}>\n <Popover.Trigger>\n <Box\n position=\"fixed\"\n width={popoverField.position.width + 'px'}\n height={popoverField.position.height + 'px'}\n top={0}\n left={0}\n transform={`translate(${iframeRect.left + popoverField.position.left}px, ${iframeRect.top + popoverField.position.top}px)`}\n />\n </Popover.Trigger>\n <Popover.Content sideOffset={4}>\n <Box padding={4} width=\"400px\">\n <InputRenderer\n document={documentResponse}\n attribute={documentResponse.schema.attributes[popoverField.path] as any}\n label={popoverField.path}\n name={popoverField.path}\n type={documentResponse.schema.attributes[popoverField.path].type}\n visible={true}\n />\n </Box>\n </Popover.Content>\n </Popover.Root>\n </InputPopoverProvider>\n </>\n );\n};\n\nfunction useHasInputPopoverParent() {\n const context = useInputPopoverContext('useHasInputPopoverParent', () => true, false);\n\n // useContext will return undefined if the called is not wrapped in the provider\n return context !== undefined;\n}\n\nexport { InputPopover, useHasInputPopoverParent };\n"],"names":["InputPopoverProvider","useInputPopoverContext","createContext","InputPopover","documentResponse","iframeRef","usePreviewContext","state","popoverField","setPopoverField","schema","current","iframeRect","getBoundingClientRect","_jsxs","_Fragment","_jsx","Box","position","top","left","width","height","zIndex","Popover","Root","open","onOpenChange","Trigger","transform","Content","sideOffset","padding","InputRenderer","document","attribute","attributes","path","label","name","type","visible","useHasInputPopoverParent","context","undefined"],"mappings":";;;;;;;AAeA,MAAM,CAACA,oBAAAA,EAAsBC,sBAAuB,CAAA,GAClDC,aAAwC,CAAA,cAAA,CAAA;AAE1C,MAAMC,YAAe,GAAA,CAAC,EAAEC,gBAAgB,EAAiD,GAAA;AACvF,IAAA,MAAMC,YAAYC,iBAAkB,CAAA,sBAAA,EAAwB,CAACC,KAAAA,GAAUA,MAAMF,SAAS,CAAA;AACtF,IAAA,MAAMG,eAAeF,iBAAkB,CAAA,sBAAA,EAAwB,CAACC,KAAAA,GAAUA,MAAMC,YAAY,CAAA;AAC5F,IAAA,MAAMC,kBAAkBH,iBACtB,CAAA,sBAAA,EACA,CAACC,KAAAA,GAAUA,MAAME,eAAe,CAAA;IAGlC,IAAI,CAACD,gBAAgB,CAACJ,gBAAAA,CAAiBM,MAAM,IAAI,CAACL,SAAUM,CAAAA,OAAO,EAAE;QACnE,OAAO,IAAA;AACT;AAEA,IAAA,MAAMC,UAAaP,GAAAA,SAAAA,CAAUM,OAAO,CAACE,qBAAqB,EAAA;IAE1D,qBACEC,IAAA,CAAAC,QAAA,EAAA;;0BAMEC,GAACC,CAAAA,GAAAA,EAAAA;gBACCC,QAAU,EAAA,OAAA;gBACVC,GAAKP,EAAAA,UAAAA,CAAWO,GAAG,GAAG,IAAA;gBACtBC,IAAMR,EAAAA,UAAAA,CAAWQ,IAAI,GAAG,IAAA;gBACxBC,KAAOT,EAAAA,UAAAA,CAAWS,KAAK,GAAG,IAAA;gBAC1BC,MAAQV,EAAAA,UAAAA,CAAWU,MAAM,GAAG,IAAA;gBAC5BC,MAAQ,EAAA;;0BAEVP,GAAChB,CAAAA,oBAAAA,EAAAA;wCACCc,IAAA,CAACU,QAAQC,IAAI,EAAA;oBAACC,IAAM,EAAA,IAAA;AAAMC,oBAAAA,YAAAA,EAAc,CAACD,IAAAA,GAAS,CAACA,IAAAA,IAAQjB,eAAgB,CAAA,IAAA,CAAA;;AACzE,sCAAAO,GAAA,CAACQ,QAAQI,OAAO,EAAA;AACd,4BAAA,QAAA,gBAAAZ,GAACC,CAAAA,GAAAA,EAAAA;gCACCC,QAAS,EAAA,OAAA;AACTG,gCAAAA,KAAAA,EAAOb,YAAaU,CAAAA,QAAQ,CAACG,KAAK,GAAG,IAAA;AACrCC,gCAAAA,MAAAA,EAAQd,YAAaU,CAAAA,QAAQ,CAACI,MAAM,GAAG,IAAA;gCACvCH,GAAK,EAAA,CAAA;gCACLC,IAAM,EAAA,CAAA;gCACNS,SAAW,EAAA,CAAC,UAAU,EAAEjB,UAAAA,CAAWQ,IAAI,GAAGZ,YAAAA,CAAaU,QAAQ,CAACE,IAAI,CAAC,IAAI,EAAER,UAAAA,CAAWO,GAAG,GAAGX,YAAAA,CAAaU,QAAQ,CAACC,GAAG,CAAC,GAAG;;;AAG7H,sCAAAH,GAAA,CAACQ,QAAQM,OAAO,EAAA;4BAACC,UAAY,EAAA,CAAA;AAC3B,4BAAA,QAAA,gBAAAf,GAACC,CAAAA,GAAAA,EAAAA;gCAAIe,OAAS,EAAA,CAAA;gCAAGX,KAAM,EAAA,OAAA;AACrB,gCAAA,QAAA,gBAAAL,GAACiB,CAAAA,qBAAAA,EAAAA;oCACCC,QAAU9B,EAAAA,gBAAAA;AACV+B,oCAAAA,SAAAA,EAAW/B,iBAAiBM,MAAM,CAAC0B,UAAU,CAAC5B,YAAAA,CAAa6B,IAAI,CAAC;AAChEC,oCAAAA,KAAAA,EAAO9B,aAAa6B,IAAI;AACxBE,oCAAAA,IAAAA,EAAM/B,aAAa6B,IAAI;oCACvBG,IAAMpC,EAAAA,gBAAAA,CAAiBM,MAAM,CAAC0B,UAAU,CAAC5B,YAAa6B,CAAAA,IAAI,CAAC,CAACG,IAAI;oCAChEC,OAAS,EAAA;;;;;;;;;AAQzB;AAEA,SAASC,wBAAAA,GAAAA;AACP,IAAA,MAAMC,OAAU1C,GAAAA,sBAAAA,CAAuB,0BAA4B,EAAA,IAAM,IAAM,EAAA,KAAA,CAAA;;AAG/E,IAAA,OAAO0C,OAAYC,KAAAA,SAAAA;AACrB;;;;"}
|
@@ -0,0 +1,67 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
var React = require('react');
|
4
|
+
var strapiAdmin = require('@strapi/admin/strapi-admin');
|
5
|
+
var InputPopover = require('../components/InputPopover.js');
|
6
|
+
var Preview = require('../pages/Preview.js');
|
7
|
+
var constants = require('../utils/constants.js');
|
8
|
+
var getSendMessage = require('../utils/getSendMessage.js');
|
9
|
+
|
10
|
+
function _interopNamespaceDefault(e) {
|
11
|
+
var n = Object.create(null);
|
12
|
+
if (e) {
|
13
|
+
Object.keys(e).forEach(function (k) {
|
14
|
+
if (k !== 'default') {
|
15
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
16
|
+
Object.defineProperty(n, k, d.get ? d : {
|
17
|
+
enumerable: true,
|
18
|
+
get: function () { return e[k]; }
|
19
|
+
});
|
20
|
+
}
|
21
|
+
});
|
22
|
+
}
|
23
|
+
n.default = e;
|
24
|
+
return Object.freeze(n);
|
25
|
+
}
|
26
|
+
|
27
|
+
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
28
|
+
|
29
|
+
function usePreviewInputManager(name) {
|
30
|
+
const iframe = Preview.usePreviewContext('usePreviewInputManager', (state)=>state.iframeRef, false);
|
31
|
+
const setPopoverField = Preview.usePreviewContext('usePreviewInputManager', (state)=>state.setPopoverField, false);
|
32
|
+
const hasInputPopoverParent = InputPopover.useHasInputPopoverParent();
|
33
|
+
const { value } = strapiAdmin.useField(name);
|
34
|
+
React__namespace.useEffect(()=>{
|
35
|
+
if (!iframe) {
|
36
|
+
return;
|
37
|
+
}
|
38
|
+
const sendMessage = getSendMessage.getSendMessage(iframe);
|
39
|
+
sendMessage(constants.INTERNAL_EVENTS.STRAPI_FIELD_CHANGE, {
|
40
|
+
field: name,
|
41
|
+
value
|
42
|
+
});
|
43
|
+
}, [
|
44
|
+
name,
|
45
|
+
value,
|
46
|
+
iframe
|
47
|
+
]);
|
48
|
+
const sendMessage = getSendMessage.getSendMessage(iframe);
|
49
|
+
return {
|
50
|
+
onFocus: ()=>{
|
51
|
+
if (hasInputPopoverParent) return;
|
52
|
+
sendMessage(constants.INTERNAL_EVENTS.STRAPI_FIELD_FOCUS, {
|
53
|
+
field: name
|
54
|
+
});
|
55
|
+
},
|
56
|
+
onBlur: ()=>{
|
57
|
+
if (hasInputPopoverParent) return;
|
58
|
+
setPopoverField?.(null);
|
59
|
+
sendMessage(constants.INTERNAL_EVENTS.STRAPI_FIELD_BLUR, {
|
60
|
+
field: name
|
61
|
+
});
|
62
|
+
}
|
63
|
+
};
|
64
|
+
}
|
65
|
+
|
66
|
+
exports.usePreviewInputManager = usePreviewInputManager;
|
67
|
+
//# sourceMappingURL=usePreviewInputManager.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"usePreviewInputManager.js","sources":["../../../../admin/src/preview/hooks/usePreviewInputManager.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useField } from '@strapi/admin/strapi-admin';\n\nimport { useHasInputPopoverParent } from '../components/InputPopover';\nimport { usePreviewContext } from '../pages/Preview';\nimport { INTERNAL_EVENTS } from '../utils/constants';\nimport { getSendMessage } from '../utils/getSendMessage';\n\ntype PreviewInputProps = Pick<\n Required<React.InputHTMLAttributes<HTMLInputElement>>,\n 'onFocus' | 'onBlur'\n>;\n\nexport function usePreviewInputManager(name: string): PreviewInputProps {\n const iframe = usePreviewContext('usePreviewInputManager', (state) => state.iframeRef, false);\n const setPopoverField = usePreviewContext(\n 'usePreviewInputManager',\n (state) => state.setPopoverField,\n false\n );\n const hasInputPopoverParent = useHasInputPopoverParent();\n const { value } = useField(name);\n\n React.useEffect(() => {\n if (!iframe) {\n return;\n }\n\n const sendMessage = getSendMessage(iframe);\n sendMessage(INTERNAL_EVENTS.STRAPI_FIELD_CHANGE, { field: name, value });\n }, [name, value, iframe]);\n\n const sendMessage = getSendMessage(iframe);\n\n return {\n onFocus: () => {\n if (hasInputPopoverParent) return;\n\n sendMessage(INTERNAL_EVENTS.STRAPI_FIELD_FOCUS, { field: name });\n },\n onBlur: () => {\n if (hasInputPopoverParent) return;\n\n setPopoverField?.(null);\n sendMessage(INTERNAL_EVENTS.STRAPI_FIELD_BLUR, { field: name });\n },\n };\n}\n"],"names":["usePreviewInputManager","name","iframe","usePreviewContext","state","iframeRef","setPopoverField","hasInputPopoverParent","useHasInputPopoverParent","value","useField","React","useEffect","sendMessage","getSendMessage","INTERNAL_EVENTS","STRAPI_FIELD_CHANGE","field","onFocus","STRAPI_FIELD_FOCUS","onBlur","STRAPI_FIELD_BLUR"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcO,SAASA,uBAAuBC,IAAY,EAAA;AACjD,IAAA,MAAMC,SAASC,yBAAkB,CAAA,wBAAA,EAA0B,CAACC,KAAUA,GAAAA,KAAAA,CAAMC,SAAS,EAAE,KAAA,CAAA;AACvF,IAAA,MAAMC,kBAAkBH,yBACtB,CAAA,wBAAA,EACA,CAACC,KAAUA,GAAAA,KAAAA,CAAME,eAAe,EAChC,KAAA,CAAA;AAEF,IAAA,MAAMC,qBAAwBC,GAAAA,qCAAAA,EAAAA;AAC9B,IAAA,MAAM,EAAEC,KAAK,EAAE,GAAGC,oBAAST,CAAAA,IAAAA,CAAAA;AAE3BU,IAAAA,gBAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAI,CAACV,MAAQ,EAAA;AACX,YAAA;AACF;AAEA,QAAA,MAAMW,cAAcC,6BAAeZ,CAAAA,MAAAA,CAAAA;QACnCW,WAAYE,CAAAA,yBAAAA,CAAgBC,mBAAmB,EAAE;YAAEC,KAAOhB,EAAAA,IAAAA;AAAMQ,YAAAA;AAAM,SAAA,CAAA;KACrE,EAAA;AAACR,QAAAA,IAAAA;AAAMQ,QAAAA,KAAAA;AAAOP,QAAAA;AAAO,KAAA,CAAA;AAExB,IAAA,MAAMW,cAAcC,6BAAeZ,CAAAA,MAAAA,CAAAA;IAEnC,OAAO;QACLgB,OAAS,EAAA,IAAA;AACP,YAAA,IAAIX,qBAAuB,EAAA;YAE3BM,WAAYE,CAAAA,yBAAAA,CAAgBI,kBAAkB,EAAE;gBAAEF,KAAOhB,EAAAA;AAAK,aAAA,CAAA;AAChE,SAAA;QACAmB,MAAQ,EAAA,IAAA;AACN,YAAA,IAAIb,qBAAuB,EAAA;YAE3BD,eAAkB,GAAA,IAAA,CAAA;YAClBO,WAAYE,CAAAA,yBAAAA,CAAgBM,iBAAiB,EAAE;gBAAEJ,KAAOhB,EAAAA;AAAK,aAAA,CAAA;AAC/D;AACF,KAAA;AACF;;;;"}
|
@@ -0,0 +1,46 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import { useField } from '@strapi/admin/strapi-admin';
|
3
|
+
import { useHasInputPopoverParent } from '../components/InputPopover.mjs';
|
4
|
+
import { usePreviewContext } from '../pages/Preview.mjs';
|
5
|
+
import { INTERNAL_EVENTS } from '../utils/constants.mjs';
|
6
|
+
import { getSendMessage } from '../utils/getSendMessage.mjs';
|
7
|
+
|
8
|
+
function usePreviewInputManager(name) {
|
9
|
+
const iframe = usePreviewContext('usePreviewInputManager', (state)=>state.iframeRef, false);
|
10
|
+
const setPopoverField = usePreviewContext('usePreviewInputManager', (state)=>state.setPopoverField, false);
|
11
|
+
const hasInputPopoverParent = useHasInputPopoverParent();
|
12
|
+
const { value } = useField(name);
|
13
|
+
React.useEffect(()=>{
|
14
|
+
if (!iframe) {
|
15
|
+
return;
|
16
|
+
}
|
17
|
+
const sendMessage = getSendMessage(iframe);
|
18
|
+
sendMessage(INTERNAL_EVENTS.STRAPI_FIELD_CHANGE, {
|
19
|
+
field: name,
|
20
|
+
value
|
21
|
+
});
|
22
|
+
}, [
|
23
|
+
name,
|
24
|
+
value,
|
25
|
+
iframe
|
26
|
+
]);
|
27
|
+
const sendMessage = getSendMessage(iframe);
|
28
|
+
return {
|
29
|
+
onFocus: ()=>{
|
30
|
+
if (hasInputPopoverParent) return;
|
31
|
+
sendMessage(INTERNAL_EVENTS.STRAPI_FIELD_FOCUS, {
|
32
|
+
field: name
|
33
|
+
});
|
34
|
+
},
|
35
|
+
onBlur: ()=>{
|
36
|
+
if (hasInputPopoverParent) return;
|
37
|
+
setPopoverField?.(null);
|
38
|
+
sendMessage(INTERNAL_EVENTS.STRAPI_FIELD_BLUR, {
|
39
|
+
field: name
|
40
|
+
});
|
41
|
+
}
|
42
|
+
};
|
43
|
+
}
|
44
|
+
|
45
|
+
export { usePreviewInputManager };
|
46
|
+
//# sourceMappingURL=usePreviewInputManager.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"usePreviewInputManager.mjs","sources":["../../../../admin/src/preview/hooks/usePreviewInputManager.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useField } from '@strapi/admin/strapi-admin';\n\nimport { useHasInputPopoverParent } from '../components/InputPopover';\nimport { usePreviewContext } from '../pages/Preview';\nimport { INTERNAL_EVENTS } from '../utils/constants';\nimport { getSendMessage } from '../utils/getSendMessage';\n\ntype PreviewInputProps = Pick<\n Required<React.InputHTMLAttributes<HTMLInputElement>>,\n 'onFocus' | 'onBlur'\n>;\n\nexport function usePreviewInputManager(name: string): PreviewInputProps {\n const iframe = usePreviewContext('usePreviewInputManager', (state) => state.iframeRef, false);\n const setPopoverField = usePreviewContext(\n 'usePreviewInputManager',\n (state) => state.setPopoverField,\n false\n );\n const hasInputPopoverParent = useHasInputPopoverParent();\n const { value } = useField(name);\n\n React.useEffect(() => {\n if (!iframe) {\n return;\n }\n\n const sendMessage = getSendMessage(iframe);\n sendMessage(INTERNAL_EVENTS.STRAPI_FIELD_CHANGE, { field: name, value });\n }, [name, value, iframe]);\n\n const sendMessage = getSendMessage(iframe);\n\n return {\n onFocus: () => {\n if (hasInputPopoverParent) return;\n\n sendMessage(INTERNAL_EVENTS.STRAPI_FIELD_FOCUS, { field: name });\n },\n onBlur: () => {\n if (hasInputPopoverParent) return;\n\n setPopoverField?.(null);\n sendMessage(INTERNAL_EVENTS.STRAPI_FIELD_BLUR, { field: name });\n },\n };\n}\n"],"names":["usePreviewInputManager","name","iframe","usePreviewContext","state","iframeRef","setPopoverField","hasInputPopoverParent","useHasInputPopoverParent","value","useField","React","useEffect","sendMessage","getSendMessage","INTERNAL_EVENTS","STRAPI_FIELD_CHANGE","field","onFocus","STRAPI_FIELD_FOCUS","onBlur","STRAPI_FIELD_BLUR"],"mappings":";;;;;;;AAcO,SAASA,uBAAuBC,IAAY,EAAA;AACjD,IAAA,MAAMC,SAASC,iBAAkB,CAAA,wBAAA,EAA0B,CAACC,KAAUA,GAAAA,KAAAA,CAAMC,SAAS,EAAE,KAAA,CAAA;AACvF,IAAA,MAAMC,kBAAkBH,iBACtB,CAAA,wBAAA,EACA,CAACC,KAAUA,GAAAA,KAAAA,CAAME,eAAe,EAChC,KAAA,CAAA;AAEF,IAAA,MAAMC,qBAAwBC,GAAAA,wBAAAA,EAAAA;AAC9B,IAAA,MAAM,EAAEC,KAAK,EAAE,GAAGC,QAAST,CAAAA,IAAAA,CAAAA;AAE3BU,IAAAA,KAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAI,CAACV,MAAQ,EAAA;AACX,YAAA;AACF;AAEA,QAAA,MAAMW,cAAcC,cAAeZ,CAAAA,MAAAA,CAAAA;QACnCW,WAAYE,CAAAA,eAAAA,CAAgBC,mBAAmB,EAAE;YAAEC,KAAOhB,EAAAA,IAAAA;AAAMQ,YAAAA;AAAM,SAAA,CAAA;KACrE,EAAA;AAACR,QAAAA,IAAAA;AAAMQ,QAAAA,KAAAA;AAAOP,QAAAA;AAAO,KAAA,CAAA;AAExB,IAAA,MAAMW,cAAcC,cAAeZ,CAAAA,MAAAA,CAAAA;IAEnC,OAAO;QACLgB,OAAS,EAAA,IAAA;AACP,YAAA,IAAIX,qBAAuB,EAAA;YAE3BM,WAAYE,CAAAA,eAAAA,CAAgBI,kBAAkB,EAAE;gBAAEF,KAAOhB,EAAAA;AAAK,aAAA,CAAA;AAChE,SAAA;QACAmB,MAAQ,EAAA,IAAA;AACN,YAAA,IAAIb,qBAAuB,EAAA;YAE3BD,eAAkB,GAAA,IAAA,CAAA;YAClBO,WAAYE,CAAAA,eAAAA,CAAgBM,iBAAiB,EAAE;gBAAEJ,KAAOhB,EAAAA;AAAK,aAAA,CAAA;AAC/D;AACF,KAAA;AACF;;;;"}
|
@@ -12,13 +12,16 @@ var collections = require('../../constants/collections.js');
|
|
12
12
|
var DocumentRBAC = require('../../features/DocumentRBAC.js');
|
13
13
|
var useDocument = require('../../hooks/useDocument.js');
|
14
14
|
var useDocumentLayout = require('../../hooks/useDocumentLayout.js');
|
15
|
+
var Blocker = require('../../pages/EditView/components/Blocker.js');
|
15
16
|
var FormLayout = require('../../pages/EditView/components/FormLayout.js');
|
16
17
|
var data = require('../../pages/EditView/utils/data.js');
|
17
18
|
var api = require('../../utils/api.js');
|
18
19
|
var validation = require('../../utils/validation.js');
|
20
|
+
var InputPopover = require('../components/InputPopover.js');
|
19
21
|
var PreviewHeader = require('../components/PreviewHeader.js');
|
20
22
|
var preview = require('../services/preview.js');
|
21
23
|
var constants = require('../utils/constants.js');
|
24
|
+
var getSendMessage = require('../utils/getSendMessage.js');
|
22
25
|
var previewScript = require('../utils/previewScript.js');
|
23
26
|
|
24
27
|
function _interopNamespaceDefault(e) {
|
@@ -70,28 +73,12 @@ const [PreviewProvider, usePreviewContext] = strapiAdmin.createContext('PreviewP
|
|
70
73
|
rotate: ${(props)=>props.$isSideEditorOpen ? '0deg' : '180deg'};
|
71
74
|
transition: rotate 0.2s ease-in-out;
|
72
75
|
`;
|
73
|
-
/**
|
74
|
-
* A function factory so we can generate a new sendMessage everytime we need one.
|
75
|
-
* We can't store and reuse a single sendMessage because it needs to have a stable identity
|
76
|
-
* as it used in a useEffect function. And we can't rely on useCallback because we need the
|
77
|
-
* up-to-date iframe ref, and this would make it stale (refs don't trigger callback reevaluations).
|
78
|
-
*/ function getSendMessage(iframe) {
|
79
|
-
return (type, payload)=>{
|
80
|
-
if (!iframe.current) return;
|
81
|
-
const { origin } = new URL(iframe.current.src);
|
82
|
-
iframe.current.contentWindow?.postMessage({
|
83
|
-
type,
|
84
|
-
...payload !== undefined && {
|
85
|
-
payload
|
86
|
-
}
|
87
|
-
}, origin);
|
88
|
-
};
|
89
|
-
}
|
90
76
|
const PreviewPage = ()=>{
|
91
77
|
const location = reactRouterDom.useLocation();
|
92
78
|
const { formatMessage } = reactIntl.useIntl();
|
93
79
|
const iframeRef = React__namespace.useRef(null);
|
94
80
|
const [isSideEditorOpen, setIsSideEditorOpen] = React__namespace.useState(true);
|
81
|
+
const [popoverField, setPopoverField] = React__namespace.useState(null);
|
95
82
|
// Read all the necessary data from the URL to find the right preview URL
|
96
83
|
const { slug: model, id: documentId, collectionType } = reactRouterDom.useParams();
|
97
84
|
const [{ query }] = strapiAdmin.useQueryParams();
|
@@ -103,13 +90,23 @@ const PreviewPage = ()=>{
|
|
103
90
|
// Listen for ready message from iframe before injecting script
|
104
91
|
React__namespace.useEffect(()=>{
|
105
92
|
const handleMessage = (event)=>{
|
93
|
+
// Only listen to events from the preview iframe
|
94
|
+
if (iframeRef.current) {
|
95
|
+
const previewOrigin = new URL(iframeRef.current?.src).origin;
|
96
|
+
if (event.origin !== previewOrigin) {
|
97
|
+
return;
|
98
|
+
}
|
99
|
+
}
|
106
100
|
if (event.data?.type === constants.PUBLIC_EVENTS.PREVIEW_READY) {
|
107
101
|
const script = `(${previewScript.previewScript.toString()})()`;
|
108
|
-
const sendMessage = getSendMessage(iframeRef);
|
102
|
+
const sendMessage = getSendMessage.getSendMessage(iframeRef);
|
109
103
|
sendMessage(constants.PUBLIC_EVENTS.STRAPI_SCRIPT, {
|
110
104
|
script
|
111
105
|
});
|
112
106
|
}
|
107
|
+
if (event.data?.type === constants.INTERNAL_EVENTS.STRAPI_FIELD_FOCUS_INTENT) {
|
108
|
+
setPopoverField?.(event.data.payload);
|
109
|
+
}
|
113
110
|
};
|
114
111
|
window.addEventListener('message', handleMessage);
|
115
112
|
return ()=>{
|
@@ -196,6 +193,9 @@ const PreviewPage = ()=>{
|
|
196
193
|
schema: documentResponse.schema,
|
197
194
|
layout: documentLayoutResponse.edit,
|
198
195
|
onPreview: onPreview,
|
196
|
+
iframeRef: iframeRef,
|
197
|
+
popoverField: popoverField,
|
198
|
+
setPopoverField: setPopoverField,
|
199
199
|
children: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Form, {
|
200
200
|
method: "PUT",
|
201
201
|
disabled: query.status === 'published' && documentResponse && documentResponse.document.status !== 'draft',
|
@@ -217,108 +217,109 @@ const PreviewPage = ()=>{
|
|
217
217
|
abortEarly: false
|
218
218
|
});
|
219
219
|
},
|
220
|
-
children:
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
})
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
onClick: ()=>setIsSideEditorOpen((prev)=>!prev),
|
275
|
-
children: /*#__PURE__*/ jsxRuntime.jsx(AnimatedArrow, {
|
276
|
-
$isSideEditorOpen: isSideEditorOpen
|
277
|
-
})
|
220
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
221
|
+
direction: "column",
|
222
|
+
height: "100%",
|
223
|
+
alignItems: "stretch",
|
224
|
+
children: [
|
225
|
+
/*#__PURE__*/ jsxRuntime.jsx(Blocker.Blocker, {}),
|
226
|
+
/*#__PURE__*/ jsxRuntime.jsx(PreviewHeader.PreviewHeader, {}),
|
227
|
+
/*#__PURE__*/ jsxRuntime.jsx(InputPopover.InputPopover, {
|
228
|
+
documentResponse: documentResponse
|
229
|
+
}),
|
230
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
231
|
+
flex: 1,
|
232
|
+
overflow: "auto",
|
233
|
+
alignItems: "stretch",
|
234
|
+
children: [
|
235
|
+
hasAdvancedPreview && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
236
|
+
overflow: "auto",
|
237
|
+
width: isSideEditorOpen ? '50%' : 0,
|
238
|
+
borderWidth: "0 1px 0 0",
|
239
|
+
borderColor: "neutral150",
|
240
|
+
paddingTop: 6,
|
241
|
+
paddingBottom: 6,
|
242
|
+
// Remove horizontal padding when the editor is closed or it won't fully disappear
|
243
|
+
paddingLeft: isSideEditorOpen ? 6 : 0,
|
244
|
+
paddingRight: isSideEditorOpen ? 6 : 0,
|
245
|
+
transition: "all 0.2s ease-in-out",
|
246
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(FormLayout.FormLayout, {
|
247
|
+
layout: documentLayoutResponse.edit.layout,
|
248
|
+
document: documentResponse,
|
249
|
+
hasBackground: false
|
250
|
+
})
|
251
|
+
}),
|
252
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
253
|
+
direction: "column",
|
254
|
+
alignItems: "stretch",
|
255
|
+
flex: 1,
|
256
|
+
height: "100%",
|
257
|
+
overflow: "hidden",
|
258
|
+
children: [
|
259
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
260
|
+
direction: "row",
|
261
|
+
background: "neutral0",
|
262
|
+
padding: 2,
|
263
|
+
borderWidth: "0 0 1px 0",
|
264
|
+
borderColor: "neutral150",
|
265
|
+
children: [
|
266
|
+
hasAdvancedPreview && /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
|
267
|
+
variant: "ghost",
|
268
|
+
label: formatMessage(isSideEditorOpen ? {
|
269
|
+
id: 'content-manager.preview.content.close-editor',
|
270
|
+
defaultMessage: 'Close editor'
|
271
|
+
} : {
|
272
|
+
id: 'content-manager.preview.content.open-editor',
|
273
|
+
defaultMessage: 'Open editor'
|
278
274
|
}),
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.SingleSelect, {
|
283
|
-
value: deviceName,
|
284
|
-
onChange: (name)=>setDeviceName(name.toString()),
|
285
|
-
"aria-label": formatMessage({
|
286
|
-
id: 'content-manager.preview.device.select',
|
287
|
-
defaultMessage: 'Select device type'
|
288
|
-
}),
|
289
|
-
children: DEVICES.map((deviceOption)=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.SingleSelectOption, {
|
290
|
-
value: deviceOption.name,
|
291
|
-
children: formatMessage(deviceOption.label)
|
292
|
-
}, deviceOption.name))
|
293
|
-
})
|
275
|
+
onClick: ()=>setIsSideEditorOpen((prev)=>!prev),
|
276
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(AnimatedArrow, {
|
277
|
+
$isSideEditorOpen: isSideEditorOpen
|
294
278
|
})
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
279
|
+
}),
|
280
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
281
|
+
justifyContent: "center",
|
282
|
+
flex: 1,
|
283
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.SingleSelect, {
|
284
|
+
value: deviceName,
|
285
|
+
onChange: (name)=>setDeviceName(name.toString()),
|
286
|
+
"aria-label": formatMessage({
|
287
|
+
id: 'content-manager.preview.device.select',
|
288
|
+
defaultMessage: 'Select device type'
|
289
|
+
}),
|
290
|
+
children: DEVICES.map((deviceOption)=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.SingleSelectOption, {
|
291
|
+
value: deviceOption.name,
|
292
|
+
children: formatMessage(deviceOption.label)
|
293
|
+
}, deviceOption.name))
|
294
|
+
})
|
295
|
+
})
|
296
|
+
]
|
297
|
+
}),
|
298
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
299
|
+
direction: "column",
|
300
|
+
justifyContent: "center",
|
301
|
+
background: "neutral0",
|
302
|
+
flex: 1,
|
303
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
304
|
+
"data-testid": "preview-iframe",
|
305
|
+
ref: iframeRef,
|
306
|
+
src: previewUrl,
|
307
|
+
title: formatMessage({
|
308
|
+
id: 'content-manager.preview.panel.title',
|
309
|
+
defaultMessage: 'Preview'
|
310
|
+
}),
|
311
|
+
width: device.width,
|
312
|
+
height: device.height,
|
313
|
+
borderWidth: 0,
|
314
|
+
tag: "iframe"
|
315
|
+
}, previewUrl)
|
316
|
+
})
|
317
|
+
]
|
318
|
+
})
|
319
|
+
]
|
320
|
+
})
|
321
|
+
]
|
322
|
+
})
|
322
323
|
})
|
323
324
|
})
|
324
325
|
]
|