@gravity-ui/page-constructor 8.5.0-alpha.10 → 8.5.0-alpha.12
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/build/cjs/editor-v2/containers/MiddleScreen/MiddleScreen.css +18 -3
- package/build/cjs/editor-v2/containers/MiddleScreen/MiddleScreen.js +9 -1
- package/build/cjs/editor-v2/containers/MiddleScreen/MiddleScreen.js.map +1 -1
- package/build/cjs/gravity-blocks/extensions/GravityBlocksExtension.d.ts +3 -9
- package/build/cjs/gravity-blocks/extensions/GravityBlocksExtension.js +5 -3
- package/build/cjs/gravity-blocks/extensions/GravityBlocksExtension.js.map +1 -1
- package/build/esm/editor-v2/containers/MiddleScreen/MiddleScreen.css +18 -3
- package/build/esm/editor-v2/containers/MiddleScreen/MiddleScreen.js +10 -2
- package/build/esm/editor-v2/containers/MiddleScreen/MiddleScreen.js.map +1 -1
- package/build/esm/gravity-blocks/extensions/GravityBlocksExtension.d.ts +3 -9
- package/build/esm/gravity-blocks/extensions/GravityBlocksExtension.js +5 -3
- package/build/esm/gravity-blocks/extensions/GravityBlocksExtension.js.map +1 -1
- package/package.json +1 -1
|
@@ -99,16 +99,31 @@
|
|
|
99
99
|
width: 100%;
|
|
100
100
|
height: 100%;
|
|
101
101
|
}
|
|
102
|
-
.pceditor-middle-screen__exit-preview
|
|
102
|
+
.pceditor-middle-screen__exit-preview-container {
|
|
103
103
|
position: fixed;
|
|
104
|
-
opacity: 0.5;
|
|
105
104
|
top: 16px;
|
|
106
|
-
right:
|
|
105
|
+
right: 24px;
|
|
107
106
|
z-index: 1001;
|
|
108
107
|
border-radius: 50%;
|
|
109
108
|
display: flex;
|
|
110
109
|
align-items: center;
|
|
111
110
|
justify-content: center;
|
|
111
|
+
background-color: var(--g-color-base-background);
|
|
112
|
+
}
|
|
113
|
+
.pceditor-middle-screen__exit-preview-container:hover {
|
|
114
|
+
opacity: 1;
|
|
115
|
+
}
|
|
116
|
+
.pceditor-middle-screen__exit-preview-container:hover .pceditor-middle-screen__exit-preview-text {
|
|
117
|
+
max-width: 100%;
|
|
118
|
+
}
|
|
119
|
+
.pceditor-middle-screen__exit-preview-text {
|
|
120
|
+
display: inline-block;
|
|
121
|
+
width: auto;
|
|
122
|
+
max-width: 3px;
|
|
123
|
+
overflow: hidden;
|
|
124
|
+
text-overflow: ellipsis;
|
|
125
|
+
white-space: nowrap;
|
|
126
|
+
transition: max-width 0.3s ease-in-out;
|
|
112
127
|
}
|
|
113
128
|
.pceditor-middle-screen__overlay {
|
|
114
129
|
position: absolute;
|
|
@@ -37,6 +37,14 @@ const MiddleScreen = ({ className, CustomTop }) => {
|
|
|
37
37
|
const isWithBackground = React.useMemo(() => {
|
|
38
38
|
return deviceWidth !== '100%';
|
|
39
39
|
}, [deviceWidth]);
|
|
40
|
+
React.useEffect(() => {
|
|
41
|
+
const handleKeyDown = (e) => {
|
|
42
|
+
if (isPreviewMode && e.key === 'Escape')
|
|
43
|
+
togglePreviewMode();
|
|
44
|
+
};
|
|
45
|
+
document.addEventListener('keydown', handleKeyDown);
|
|
46
|
+
return () => document.removeEventListener('keydown', handleKeyDown);
|
|
47
|
+
}, [isPreviewMode, togglePreviewMode]);
|
|
40
48
|
return ((0, jsx_runtime_1.jsxs)("div", { className: b(null, className), children: [CustomTop && !isPreviewMode ? ((0, jsx_runtime_1.jsx)("div", { className: b('topbar'), children: (0, jsx_runtime_1.jsx)(CustomTop, {}) })) : null, (0, jsx_runtime_1.jsx)("div", { className: b('content', { fullscreen: isPreviewMode }), children: (0, jsx_runtime_1.jsx)("div", { className: b('wrapper'), children: (0, jsx_runtime_1.jsxs)("div", { ref: setCanvasRef, className: b('canvas', {
|
|
41
49
|
hidden: !initialized,
|
|
42
50
|
fullscreen: isPreviewMode,
|
|
@@ -45,7 +53,7 @@ const MiddleScreen = ({ className, CustomTop }) => {
|
|
|
45
53
|
if (instance) {
|
|
46
54
|
setIframeElement(instance);
|
|
47
55
|
}
|
|
48
|
-
}, className: b('iframe', { fullscreen: isPreviewMode }), src: url, height: isPreviewMode ? '100%' : `${height}px`, width: isPreviewMode ? '100%' : deviceWidth, frameBorder: "0", title: "Page Constructor Iframe" }), !isPreviewMode && ((0, jsx_runtime_1.jsx)(Overlay_1.default, { className: b('overlay'), canvasElement: canvasRef }))] }), isPreviewMode && ((0, jsx_runtime_1.jsx)(uikit_1.Button, { view: "
|
|
56
|
+
}, className: b('iframe', { fullscreen: isPreviewMode }), src: url, height: isPreviewMode ? '100%' : `${height}px`, width: isPreviewMode ? '100%' : deviceWidth, frameBorder: "0", title: "Page Constructor Iframe" }), !isPreviewMode && ((0, jsx_runtime_1.jsx)(Overlay_1.default, { className: b('overlay'), canvasElement: canvasRef }))] }), isPreviewMode && ((0, jsx_runtime_1.jsx)("div", { className: b('exit-preview-container'), children: (0, jsx_runtime_1.jsx)(uikit_1.ActionTooltip, { title: "Exit preview mode", placement: "left", hotkey: "Escape", children: (0, jsx_runtime_1.jsx)(uikit_1.Button, { view: "action", className: b('exit-preview'), onClick: togglePreviewMode, "aria-label": "Exit preview mode", title: "Exit preview mode", size: "m", children: (0, jsx_runtime_1.jsx)(uikit_1.Icon, { size: 20, data: icons_1.Xmark }) }) }) })), !initialized && ((0, jsx_runtime_1.jsx)("div", { className: b('loading'), children: (0, jsx_runtime_1.jsx)(uikit_1.Loader, { size: 'l' }) }))] }) }) })] }));
|
|
49
57
|
};
|
|
50
58
|
exports.default = MiddleScreen;
|
|
51
59
|
//# sourceMappingURL=MiddleScreen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiddleScreen.js","sourceRoot":"../../../../../src","sources":["editor-v2/containers/MiddleScreen/MiddleScreen.tsx"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAE/B,6CAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"MiddleScreen.js","sourceRoot":"../../../../../src","sources":["editor-v2/containers/MiddleScreen/MiddleScreen.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport {Xmark} from '@gravity-ui/icons';\nimport {ActionTooltip, Button, Icon, Loader} from '@gravity-ui/uikit';\n\nimport {usePostMessageAPIListener} from '../../../common/postMessage';\nimport {IframeContext} from '../../context/iframeContext';\nimport {useMainEditorStore} from '../../hooks/useMainEditorStore';\nimport {editorCn} from '../../utils/cn';\nimport Overlay from '../Overlay/Overlay';\n\nimport './MiddleScreen.scss';\n\nconst b = editorCn('middle-screen');\n\n// the maximum height of the iframe\nconst IFRAME_MAX_HEIGHT = 50000;\n\ninterface MiddleScreenProps {\n className?: string;\n CustomTop?: React.ElementType;\n}\n\nconst MiddleScreen = ({className, CustomTop}: MiddleScreenProps) => {\n const {zoom, initialized, deviceWidth, isPreviewMode, togglePreviewMode} = useMainEditorStore();\n const {url, setIframeElement} = React.useContext(IframeContext);\n const [canvasRef, setCanvasRef] = React.useState<HTMLDivElement | null>(null);\n const [height, setHeight] = React.useState(0);\n\n const canvasStyle = React.useMemo(\n () => ({\n transform: isPreviewMode ? 'none' : `scale(${zoom}%)`,\n height: isPreviewMode ? '100%' : `${(100 / zoom) * 100}%`,\n width: isPreviewMode ? '100%' : `${(100 / zoom) * 100}%`,\n maxWidth: isPreviewMode ? '100%' : `${(100 / zoom) * 100}%`,\n }),\n [isPreviewMode, zoom],\n );\n\n const onResize = React.useCallback(\n (newHeight: number) => {\n const settedHeight = newHeight + 100;\n setHeight(settedHeight > IFRAME_MAX_HEIGHT ? IFRAME_MAX_HEIGHT : settedHeight);\n },\n [setHeight],\n );\n\n usePostMessageAPIListener('ON_RESIZE', ({height: newHeight}) => {\n onResize(newHeight);\n });\n\n usePostMessageAPIListener('ON_INIT', ({height: newHeight}) => {\n onResize(newHeight);\n });\n\n const isWithBackground = React.useMemo(() => {\n return deviceWidth !== '100%';\n }, [deviceWidth]);\n\n React.useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (isPreviewMode && e.key === 'Escape') togglePreviewMode();\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [isPreviewMode, togglePreviewMode]);\n\n return (\n <div className={b(null, className)}>\n {CustomTop && !isPreviewMode ? (\n <div className={b('topbar')}>\n <CustomTop />\n </div>\n ) : null}\n <div className={b('content', {fullscreen: isPreviewMode})}>\n <div className={b('wrapper')}>\n <div\n ref={setCanvasRef}\n className={b('canvas', {\n hidden: !initialized,\n fullscreen: isPreviewMode,\n withBackground: isWithBackground,\n })}\n style={canvasStyle}\n >\n <div\n className={b('iframe-container', {fullscreen: isPreviewMode})}\n style={{width: isPreviewMode ? '100%' : deviceWidth}}\n >\n <iframe\n ref={(instance) => {\n if (instance) {\n setIframeElement(instance);\n }\n }}\n className={b('iframe', {fullscreen: isPreviewMode})}\n src={url}\n height={isPreviewMode ? '100%' : `${height}px`}\n width={isPreviewMode ? '100%' : deviceWidth}\n frameBorder=\"0\"\n title=\"Page Constructor Iframe\"\n />\n {!isPreviewMode && (\n <Overlay className={b('overlay')} canvasElement={canvasRef} />\n )}\n </div>\n {isPreviewMode && (\n <div className={b('exit-preview-container')}>\n <ActionTooltip\n title=\"Exit preview mode\"\n placement=\"left\"\n hotkey=\"Escape\"\n >\n <Button\n view=\"action\"\n className={b('exit-preview')}\n onClick={togglePreviewMode}\n aria-label=\"Exit preview mode\"\n title=\"Exit preview mode\"\n size=\"m\"\n >\n <Icon size={20} data={Xmark} />\n </Button>\n </ActionTooltip>\n </div>\n )}\n {!initialized && (\n <div className={b('loading')}>\n <Loader size={'l'} />\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default MiddleScreen;\n"]}
|
|
@@ -1,19 +1,13 @@
|
|
|
1
1
|
import type { PageConstructorExtension } from "../../containers/PageConstructor/PageConstructor.js";
|
|
2
2
|
import { MediaProps, NavigationData, PageContent } from "../../models/index.js";
|
|
3
3
|
export { GravityBlocksProvider, type GravityBlocksProviderProps, } from "../context/GravityBlocksProvider.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
animated?: boolean;
|
|
4
|
+
import { GeneralExtensionGlobalConfig, GeneralExtensionWrapperProps } from "./GeneralExtension.js";
|
|
5
|
+
export interface GravityBlocksWrapperProps extends GeneralExtensionWrapperProps {
|
|
7
6
|
renderMenu?: () => React.ReactNode;
|
|
8
|
-
microdata?: {
|
|
9
|
-
contentUpdatedDate?: string;
|
|
10
|
-
};
|
|
11
7
|
}
|
|
12
|
-
export interface GravityBlocksGlobalConfig {
|
|
8
|
+
export interface GravityBlocksGlobalConfig extends GeneralExtensionGlobalConfig {
|
|
13
9
|
background?: MediaProps;
|
|
14
10
|
navigation?: NavigationData;
|
|
15
|
-
isBranded?: boolean;
|
|
16
|
-
animated?: boolean;
|
|
17
11
|
}
|
|
18
12
|
export interface GravityPageContent extends PageContent, GravityBlocksGlobalConfig {
|
|
19
13
|
}
|
|
@@ -6,16 +6,18 @@ Object.defineProperty(exports, "GravityBlocksProvider", { enumerable: true, get:
|
|
|
6
6
|
const _1 = require("./index.js");
|
|
7
7
|
/** @returns Array of PageConstructorExtension instances for gravity-blocks. */
|
|
8
8
|
const gravityBlocksExtension = ({ wrapperProps = {}, globalDefaults = {}, }) => {
|
|
9
|
-
const { background, navigation,
|
|
9
|
+
const { background, navigation, ...generalGlobalDefaults } = globalDefaults;
|
|
10
|
+
const { renderMenu, ...generalWrapperProps } = wrapperProps;
|
|
10
11
|
return [
|
|
11
12
|
(0, _1.generalExtension)({
|
|
12
|
-
|
|
13
|
+
wrapperProps: generalWrapperProps,
|
|
14
|
+
globalDefaults: generalGlobalDefaults,
|
|
13
15
|
}),
|
|
14
16
|
(0, _1.backgroundExtension)({
|
|
15
17
|
globalDefaults: { background },
|
|
16
18
|
}),
|
|
17
19
|
(0, _1.navigationExtension)({
|
|
18
|
-
wrapperProps,
|
|
20
|
+
wrapperProps: { renderMenu },
|
|
19
21
|
globalDefaults: { navigation },
|
|
20
22
|
}),
|
|
21
23
|
(0, _1.blockBaseExtension)(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GravityBlocksExtension.js","sourceRoot":"../../../../src","sources":["gravity-blocks/extensions/GravityBlocksExtension.tsx"],"names":[],"mappings":";;;AAGA,6EAG0C;AAFtC,8HAAA,qBAAqB,OAAA;
|
|
1
|
+
{"version":3,"file":"GravityBlocksExtension.js","sourceRoot":"../../../../src","sources":["gravity-blocks/extensions/GravityBlocksExtension.tsx"],"names":[],"mappings":";;;AAGA,6EAG0C;AAFtC,8HAAA,qBAAqB,OAAA;AAMzB,iCAAiG;AAajG,+EAA+E;AACxE,MAAM,sBAAsB,GAAG,CAAC,EACnC,YAAY,GAAG,EAAE,EACjB,cAAc,GAAG,EAAE,GAItB,EAAoF,EAAE;IACnF,MAAM,EAAC,UAAU,EAAE,UAAU,EAAE,GAAG,qBAAqB,EAAC,GAAG,cAAc,CAAC;IAC1E,MAAM,EAAC,UAAU,EAAE,GAAG,mBAAmB,EAAC,GAAG,YAAY,CAAC;IAE1D,OAAO;QACH,IAAA,mBAAgB,EAAC;YACb,YAAY,EAAE,mBAAmB;YACjC,cAAc,EAAE,qBAAqB;SACxC,CAAC;QACF,IAAA,sBAAmB,EAAC;YAChB,cAAc,EAAE,EAAC,UAAU,EAAC;SAC/B,CAAC;QACF,IAAA,sBAAmB,EAAC;YAChB,YAAY,EAAE,EAAC,UAAU,EAAC;YAC1B,cAAc,EAAE,EAAC,UAAU,EAAC;SAC/B,CAAC;QACF,IAAA,qBAAkB,GAAE;KACvB,CAAC;AACN,CAAC,CAAC;AAxBW,QAAA,sBAAsB,0BAwBjC","sourcesContent":["import type {PageConstructorExtension} from '../../containers/PageConstructor/PageConstructor';\nimport {MediaProps, NavigationData, PageContent} from '../../models';\n\nexport {\n GravityBlocksProvider,\n type GravityBlocksProviderProps,\n} from '../context/GravityBlocksProvider';\n\nimport {GeneralExtensionGlobalConfig, GeneralExtensionWrapperProps} from './GeneralExtension';\n\nimport {backgroundExtension, blockBaseExtension, generalExtension, navigationExtension} from '.';\n\nexport interface GravityBlocksWrapperProps extends GeneralExtensionWrapperProps {\n renderMenu?: () => React.ReactNode;\n}\n\nexport interface GravityBlocksGlobalConfig extends GeneralExtensionGlobalConfig {\n background?: MediaProps;\n navigation?: NavigationData;\n}\n\nexport interface GravityPageContent extends PageContent, GravityBlocksGlobalConfig {}\n\n/** @returns Array of PageConstructorExtension instances for gravity-blocks. */\nexport const gravityBlocksExtension = ({\n wrapperProps = {},\n globalDefaults = {},\n}: {\n wrapperProps?: GravityBlocksWrapperProps;\n globalDefaults?: GravityBlocksGlobalConfig;\n}): PageConstructorExtension<GravityBlocksGlobalConfig, GravityBlocksWrapperProps>[] => {\n const {background, navigation, ...generalGlobalDefaults} = globalDefaults;\n const {renderMenu, ...generalWrapperProps} = wrapperProps;\n\n return [\n generalExtension({\n wrapperProps: generalWrapperProps,\n globalDefaults: generalGlobalDefaults,\n }),\n backgroundExtension({\n globalDefaults: {background},\n }),\n navigationExtension({\n wrapperProps: {renderMenu},\n globalDefaults: {navigation},\n }),\n blockBaseExtension(),\n ];\n};\n"]}
|
|
@@ -99,16 +99,31 @@
|
|
|
99
99
|
width: 100%;
|
|
100
100
|
height: 100%;
|
|
101
101
|
}
|
|
102
|
-
.pceditor-middle-screen__exit-preview
|
|
102
|
+
.pceditor-middle-screen__exit-preview-container {
|
|
103
103
|
position: fixed;
|
|
104
|
-
opacity: 0.5;
|
|
105
104
|
top: 16px;
|
|
106
|
-
right:
|
|
105
|
+
right: 24px;
|
|
107
106
|
z-index: 1001;
|
|
108
107
|
border-radius: 50%;
|
|
109
108
|
display: flex;
|
|
110
109
|
align-items: center;
|
|
111
110
|
justify-content: center;
|
|
111
|
+
background-color: var(--g-color-base-background);
|
|
112
|
+
}
|
|
113
|
+
.pceditor-middle-screen__exit-preview-container:hover {
|
|
114
|
+
opacity: 1;
|
|
115
|
+
}
|
|
116
|
+
.pceditor-middle-screen__exit-preview-container:hover .pceditor-middle-screen__exit-preview-text {
|
|
117
|
+
max-width: 100%;
|
|
118
|
+
}
|
|
119
|
+
.pceditor-middle-screen__exit-preview-text {
|
|
120
|
+
display: inline-block;
|
|
121
|
+
width: auto;
|
|
122
|
+
max-width: 3px;
|
|
123
|
+
overflow: hidden;
|
|
124
|
+
text-overflow: ellipsis;
|
|
125
|
+
white-space: nowrap;
|
|
126
|
+
transition: max-width 0.3s ease-in-out;
|
|
112
127
|
}
|
|
113
128
|
.pceditor-middle-screen__overlay {
|
|
114
129
|
position: absolute;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { Xmark } from '@gravity-ui/icons';
|
|
4
|
-
import { Button, Icon, Loader } from '@gravity-ui/uikit';
|
|
4
|
+
import { ActionTooltip, Button, Icon, Loader } from '@gravity-ui/uikit';
|
|
5
5
|
import { usePostMessageAPIListener } from "../../../common/postMessage.js";
|
|
6
6
|
import { IframeContext } from "../../context/iframeContext/index.js";
|
|
7
7
|
import { useMainEditorStore } from "../../hooks/useMainEditorStore.js";
|
|
@@ -35,6 +35,14 @@ const MiddleScreen = ({ className, CustomTop }) => {
|
|
|
35
35
|
const isWithBackground = React.useMemo(() => {
|
|
36
36
|
return deviceWidth !== '100%';
|
|
37
37
|
}, [deviceWidth]);
|
|
38
|
+
React.useEffect(() => {
|
|
39
|
+
const handleKeyDown = (e) => {
|
|
40
|
+
if (isPreviewMode && e.key === 'Escape')
|
|
41
|
+
togglePreviewMode();
|
|
42
|
+
};
|
|
43
|
+
document.addEventListener('keydown', handleKeyDown);
|
|
44
|
+
return () => document.removeEventListener('keydown', handleKeyDown);
|
|
45
|
+
}, [isPreviewMode, togglePreviewMode]);
|
|
38
46
|
return (_jsxs("div", { className: b(null, className), children: [CustomTop && !isPreviewMode ? (_jsx("div", { className: b('topbar'), children: _jsx(CustomTop, {}) })) : null, _jsx("div", { className: b('content', { fullscreen: isPreviewMode }), children: _jsx("div", { className: b('wrapper'), children: _jsxs("div", { ref: setCanvasRef, className: b('canvas', {
|
|
39
47
|
hidden: !initialized,
|
|
40
48
|
fullscreen: isPreviewMode,
|
|
@@ -43,7 +51,7 @@ const MiddleScreen = ({ className, CustomTop }) => {
|
|
|
43
51
|
if (instance) {
|
|
44
52
|
setIframeElement(instance);
|
|
45
53
|
}
|
|
46
|
-
}, className: b('iframe', { fullscreen: isPreviewMode }), src: url, height: isPreviewMode ? '100%' : `${height}px`, width: isPreviewMode ? '100%' : deviceWidth, frameBorder: "0", title: "Page Constructor Iframe" }), !isPreviewMode && (_jsx(Overlay, { className: b('overlay'), canvasElement: canvasRef }))] }), isPreviewMode && (_jsx(Button, { view: "
|
|
54
|
+
}, className: b('iframe', { fullscreen: isPreviewMode }), src: url, height: isPreviewMode ? '100%' : `${height}px`, width: isPreviewMode ? '100%' : deviceWidth, frameBorder: "0", title: "Page Constructor Iframe" }), !isPreviewMode && (_jsx(Overlay, { className: b('overlay'), canvasElement: canvasRef }))] }), isPreviewMode && (_jsx("div", { className: b('exit-preview-container'), children: _jsx(ActionTooltip, { title: "Exit preview mode", placement: "left", hotkey: "Escape", children: _jsx(Button, { view: "action", className: b('exit-preview'), onClick: togglePreviewMode, "aria-label": "Exit preview mode", title: "Exit preview mode", size: "m", children: _jsx(Icon, { size: 20, data: Xmark }) }) }) })), !initialized && (_jsx("div", { className: b('loading'), children: _jsx(Loader, { size: 'l' }) }))] }) }) })] }));
|
|
47
55
|
};
|
|
48
56
|
export default MiddleScreen;
|
|
49
57
|
//# sourceMappingURL=MiddleScreen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiddleScreen.js","sourceRoot":"../../../../../src","sources":["editor-v2/containers/MiddleScreen/MiddleScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAC,KAAK,EAAC,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAC,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"MiddleScreen.js","sourceRoot":"../../../../../src","sources":["editor-v2/containers/MiddleScreen/MiddleScreen.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport {Xmark} from '@gravity-ui/icons';\nimport {ActionTooltip, Button, Icon, Loader} from '@gravity-ui/uikit';\n\nimport {usePostMessageAPIListener} from '../../../common/postMessage';\nimport {IframeContext} from '../../context/iframeContext';\nimport {useMainEditorStore} from '../../hooks/useMainEditorStore';\nimport {editorCn} from '../../utils/cn';\nimport Overlay from '../Overlay/Overlay';\n\nimport './MiddleScreen.scss';\n\nconst b = editorCn('middle-screen');\n\n// the maximum height of the iframe\nconst IFRAME_MAX_HEIGHT = 50000;\n\ninterface MiddleScreenProps {\n className?: string;\n CustomTop?: React.ElementType;\n}\n\nconst MiddleScreen = ({className, CustomTop}: MiddleScreenProps) => {\n const {zoom, initialized, deviceWidth, isPreviewMode, togglePreviewMode} = useMainEditorStore();\n const {url, setIframeElement} = React.useContext(IframeContext);\n const [canvasRef, setCanvasRef] = React.useState<HTMLDivElement | null>(null);\n const [height, setHeight] = React.useState(0);\n\n const canvasStyle = React.useMemo(\n () => ({\n transform: isPreviewMode ? 'none' : `scale(${zoom}%)`,\n height: isPreviewMode ? '100%' : `${(100 / zoom) * 100}%`,\n width: isPreviewMode ? '100%' : `${(100 / zoom) * 100}%`,\n maxWidth: isPreviewMode ? '100%' : `${(100 / zoom) * 100}%`,\n }),\n [isPreviewMode, zoom],\n );\n\n const onResize = React.useCallback(\n (newHeight: number) => {\n const settedHeight = newHeight + 100;\n setHeight(settedHeight > IFRAME_MAX_HEIGHT ? IFRAME_MAX_HEIGHT : settedHeight);\n },\n [setHeight],\n );\n\n usePostMessageAPIListener('ON_RESIZE', ({height: newHeight}) => {\n onResize(newHeight);\n });\n\n usePostMessageAPIListener('ON_INIT', ({height: newHeight}) => {\n onResize(newHeight);\n });\n\n const isWithBackground = React.useMemo(() => {\n return deviceWidth !== '100%';\n }, [deviceWidth]);\n\n React.useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (isPreviewMode && e.key === 'Escape') togglePreviewMode();\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [isPreviewMode, togglePreviewMode]);\n\n return (\n <div className={b(null, className)}>\n {CustomTop && !isPreviewMode ? (\n <div className={b('topbar')}>\n <CustomTop />\n </div>\n ) : null}\n <div className={b('content', {fullscreen: isPreviewMode})}>\n <div className={b('wrapper')}>\n <div\n ref={setCanvasRef}\n className={b('canvas', {\n hidden: !initialized,\n fullscreen: isPreviewMode,\n withBackground: isWithBackground,\n })}\n style={canvasStyle}\n >\n <div\n className={b('iframe-container', {fullscreen: isPreviewMode})}\n style={{width: isPreviewMode ? '100%' : deviceWidth}}\n >\n <iframe\n ref={(instance) => {\n if (instance) {\n setIframeElement(instance);\n }\n }}\n className={b('iframe', {fullscreen: isPreviewMode})}\n src={url}\n height={isPreviewMode ? '100%' : `${height}px`}\n width={isPreviewMode ? '100%' : deviceWidth}\n frameBorder=\"0\"\n title=\"Page Constructor Iframe\"\n />\n {!isPreviewMode && (\n <Overlay className={b('overlay')} canvasElement={canvasRef} />\n )}\n </div>\n {isPreviewMode && (\n <div className={b('exit-preview-container')}>\n <ActionTooltip\n title=\"Exit preview mode\"\n placement=\"left\"\n hotkey=\"Escape\"\n >\n <Button\n view=\"action\"\n className={b('exit-preview')}\n onClick={togglePreviewMode}\n aria-label=\"Exit preview mode\"\n title=\"Exit preview mode\"\n size=\"m\"\n >\n <Icon size={20} data={Xmark} />\n </Button>\n </ActionTooltip>\n </div>\n )}\n {!initialized && (\n <div className={b('loading')}>\n <Loader size={'l'} />\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default MiddleScreen;\n"]}
|
|
@@ -1,19 +1,13 @@
|
|
|
1
1
|
import type { PageConstructorExtension } from "../../containers/PageConstructor/PageConstructor.js";
|
|
2
2
|
import { MediaProps, NavigationData, PageContent } from "../../models/index.js";
|
|
3
3
|
export { GravityBlocksProvider, type GravityBlocksProviderProps, } from "../context/GravityBlocksProvider.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
animated?: boolean;
|
|
4
|
+
import { GeneralExtensionGlobalConfig, GeneralExtensionWrapperProps } from "./GeneralExtension.js";
|
|
5
|
+
export interface GravityBlocksWrapperProps extends GeneralExtensionWrapperProps {
|
|
7
6
|
renderMenu?: () => React.ReactNode;
|
|
8
|
-
microdata?: {
|
|
9
|
-
contentUpdatedDate?: string;
|
|
10
|
-
};
|
|
11
7
|
}
|
|
12
|
-
export interface GravityBlocksGlobalConfig {
|
|
8
|
+
export interface GravityBlocksGlobalConfig extends GeneralExtensionGlobalConfig {
|
|
13
9
|
background?: MediaProps;
|
|
14
10
|
navigation?: NavigationData;
|
|
15
|
-
isBranded?: boolean;
|
|
16
|
-
animated?: boolean;
|
|
17
11
|
}
|
|
18
12
|
export interface GravityPageContent extends PageContent, GravityBlocksGlobalConfig {
|
|
19
13
|
}
|
|
@@ -2,16 +2,18 @@ export { GravityBlocksProvider, } from "../context/GravityBlocksProvider.js";
|
|
|
2
2
|
import { backgroundExtension, blockBaseExtension, generalExtension, navigationExtension } from "./index.js";
|
|
3
3
|
/** @returns Array of PageConstructorExtension instances for gravity-blocks. */
|
|
4
4
|
export const gravityBlocksExtension = ({ wrapperProps = {}, globalDefaults = {}, }) => {
|
|
5
|
-
const { background, navigation,
|
|
5
|
+
const { background, navigation, ...generalGlobalDefaults } = globalDefaults;
|
|
6
|
+
const { renderMenu, ...generalWrapperProps } = wrapperProps;
|
|
6
7
|
return [
|
|
7
8
|
generalExtension({
|
|
8
|
-
|
|
9
|
+
wrapperProps: generalWrapperProps,
|
|
10
|
+
globalDefaults: generalGlobalDefaults,
|
|
9
11
|
}),
|
|
10
12
|
backgroundExtension({
|
|
11
13
|
globalDefaults: { background },
|
|
12
14
|
}),
|
|
13
15
|
navigationExtension({
|
|
14
|
-
wrapperProps,
|
|
16
|
+
wrapperProps: { renderMenu },
|
|
15
17
|
globalDefaults: { navigation },
|
|
16
18
|
}),
|
|
17
19
|
blockBaseExtension(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GravityBlocksExtension.js","sourceRoot":"../../../../src","sources":["gravity-blocks/extensions/GravityBlocksExtension.tsx"],"names":[],"mappings":"AAGA,OAAO,EACH,qBAAqB,GAExB,4CAAyC;
|
|
1
|
+
{"version":3,"file":"GravityBlocksExtension.js","sourceRoot":"../../../../src","sources":["gravity-blocks/extensions/GravityBlocksExtension.tsx"],"names":[],"mappings":"AAGA,OAAO,EACH,qBAAqB,GAExB,4CAAyC;AAI1C,OAAO,EAAC,mBAAmB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,mBAAmB,EAAC,mBAAU;AAajG,+EAA+E;AAC/E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EACnC,YAAY,GAAG,EAAE,EACjB,cAAc,GAAG,EAAE,GAItB,EAAoF,EAAE;IACnF,MAAM,EAAC,UAAU,EAAE,UAAU,EAAE,GAAG,qBAAqB,EAAC,GAAG,cAAc,CAAC;IAC1E,MAAM,EAAC,UAAU,EAAE,GAAG,mBAAmB,EAAC,GAAG,YAAY,CAAC;IAE1D,OAAO;QACH,gBAAgB,CAAC;YACb,YAAY,EAAE,mBAAmB;YACjC,cAAc,EAAE,qBAAqB;SACxC,CAAC;QACF,mBAAmB,CAAC;YAChB,cAAc,EAAE,EAAC,UAAU,EAAC;SAC/B,CAAC;QACF,mBAAmB,CAAC;YAChB,YAAY,EAAE,EAAC,UAAU,EAAC;YAC1B,cAAc,EAAE,EAAC,UAAU,EAAC;SAC/B,CAAC;QACF,kBAAkB,EAAE;KACvB,CAAC;AACN,CAAC,CAAC","sourcesContent":["import type {PageConstructorExtension} from '../../containers/PageConstructor/PageConstructor';\nimport {MediaProps, NavigationData, PageContent} from '../../models';\n\nexport {\n GravityBlocksProvider,\n type GravityBlocksProviderProps,\n} from '../context/GravityBlocksProvider';\n\nimport {GeneralExtensionGlobalConfig, GeneralExtensionWrapperProps} from './GeneralExtension';\n\nimport {backgroundExtension, blockBaseExtension, generalExtension, navigationExtension} from '.';\n\nexport interface GravityBlocksWrapperProps extends GeneralExtensionWrapperProps {\n renderMenu?: () => React.ReactNode;\n}\n\nexport interface GravityBlocksGlobalConfig extends GeneralExtensionGlobalConfig {\n background?: MediaProps;\n navigation?: NavigationData;\n}\n\nexport interface GravityPageContent extends PageContent, GravityBlocksGlobalConfig {}\n\n/** @returns Array of PageConstructorExtension instances for gravity-blocks. */\nexport const gravityBlocksExtension = ({\n wrapperProps = {},\n globalDefaults = {},\n}: {\n wrapperProps?: GravityBlocksWrapperProps;\n globalDefaults?: GravityBlocksGlobalConfig;\n}): PageConstructorExtension<GravityBlocksGlobalConfig, GravityBlocksWrapperProps>[] => {\n const {background, navigation, ...generalGlobalDefaults} = globalDefaults;\n const {renderMenu, ...generalWrapperProps} = wrapperProps;\n\n return [\n generalExtension({\n wrapperProps: generalWrapperProps,\n globalDefaults: generalGlobalDefaults,\n }),\n backgroundExtension({\n globalDefaults: {background},\n }),\n navigationExtension({\n wrapperProps: {renderMenu},\n globalDefaults: {navigation},\n }),\n blockBaseExtension(),\n ];\n};\n"]}
|