@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.
@@ -99,16 +99,31 @@
99
99
  width: 100%;
100
100
  height: 100%;
101
101
  }
102
- .pceditor-middle-screen__exit-preview.g-button {
102
+ .pceditor-middle-screen__exit-preview-container {
103
103
  position: fixed;
104
- opacity: 0.5;
105
104
  top: 16px;
106
- right: 16px;
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: "normal-contrast", className: b('exit-preview'), onClick: togglePreviewMode, "aria-label": "Exit preview mode", title: "Exit preview mode", size: "l", children: (0, jsx_runtime_1.jsx)(uikit_1.Icon, { size: 24, 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' }) }))] }) }) })] }));
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,6CAAuD;AAEvD,gEAAsE;AACtE,wEAA0D;AAC1D,0EAAkE;AAClE,0CAAwC;AACxC,4EAAyC;AAIzC,MAAM,CAAC,GAAG,IAAA,aAAQ,EAAC,eAAe,CAAC,CAAC;AAEpC,mCAAmC;AACnC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAOhC,MAAM,YAAY,GAAG,CAAC,EAAC,SAAS,EAAE,SAAS,EAAoB,EAAE,EAAE;IAC/D,MAAM,EAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAC,GAAG,IAAA,uCAAkB,GAAE,CAAC;IAChG,MAAM,EAAC,GAAG,EAAE,gBAAgB,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,6BAAa,CAAC,CAAC;IAChE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAwB,IAAI,CAAC,CAAC;IAC9E,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE9C,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAC7B,GAAG,EAAE,CAAC,CAAC;QACH,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI;QACrD,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG;QACzD,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG;QACxD,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG;KAC9D,CAAC,EACF,CAAC,aAAa,EAAE,IAAI,CAAC,CACxB,CAAC;IAEF,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAC9B,CAAC,SAAiB,EAAE,EAAE;QAClB,MAAM,YAAY,GAAG,SAAS,GAAG,GAAG,CAAC;QACrC,SAAS,CAAC,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACnF,CAAC,EACD,CAAC,SAAS,CAAC,CACd,CAAC;IAEF,IAAA,uCAAyB,EAAC,WAAW,EAAE,CAAC,EAAC,MAAM,EAAE,SAAS,EAAC,EAAE,EAAE;QAC3D,QAAQ,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,IAAA,uCAAyB,EAAC,SAAS,EAAE,CAAC,EAAC,MAAM,EAAE,SAAS,EAAC,EAAE,EAAE;QACzD,QAAQ,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACxC,OAAO,WAAW,KAAK,MAAM,CAAC;IAClC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,OAAO,CACH,iCAAK,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,aAC7B,SAAS,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAC3B,gCAAK,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,YACvB,uBAAC,SAAS,KAAG,GACX,CACT,CAAC,CAAC,CAAC,IAAI,EACR,gCAAK,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,EAAC,UAAU,EAAE,aAAa,EAAC,CAAC,YACrD,gCAAK,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,YACxB,iCACI,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE;4BACnB,MAAM,EAAE,CAAC,WAAW;4BACpB,UAAU,EAAE,aAAa;4BACzB,cAAc,EAAE,gBAAgB;yBACnC,CAAC,EACF,KAAK,EAAE,WAAW,aAElB,iCACI,SAAS,EAAE,CAAC,CAAC,kBAAkB,EAAE,EAAC,UAAU,EAAE,aAAa,EAAC,CAAC,EAC7D,KAAK,EAAE,EAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAC,aAEpD,mCACI,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE;4CACd,IAAI,QAAQ,EAAE,CAAC;gDACX,gBAAgB,CAAC,QAAQ,CAAC,CAAC;4CAC/B,CAAC;wCACL,CAAC,EACD,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAC,UAAU,EAAE,aAAa,EAAC,CAAC,EACnD,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,EAC9C,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAC3C,WAAW,EAAC,GAAG,EACf,KAAK,EAAC,yBAAyB,GACjC,EACD,CAAC,aAAa,IAAI,CACf,uBAAC,iBAAO,IAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,SAAS,GAAI,CACjE,IACC,EACL,aAAa,IAAI,CACd,uBAAC,cAAM,IACH,IAAI,EAAC,iBAAiB,EACtB,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,EAC5B,OAAO,EAAE,iBAAiB,gBACf,mBAAmB,EAC9B,KAAK,EAAC,mBAAmB,EACzB,IAAI,EAAC,GAAG,YAER,uBAAC,YAAI,IAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,aAAK,GAAI,GAC1B,CACZ,EACA,CAAC,WAAW,IAAI,CACb,gCAAK,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,YACxB,uBAAC,cAAM,IAAC,IAAI,EAAE,GAAG,GAAI,GACnB,CACT,IACC,GACJ,GACJ,IACJ,CACT,CAAC;AACN,CAAC,CAAC;AAEF,kBAAe,YAAY,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {Xmark} from '@gravity-ui/icons';\nimport {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 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 <Button\n view=\"normal-contrast\"\n className={b('exit-preview')}\n onClick={togglePreviewMode}\n aria-label=\"Exit preview mode\"\n title=\"Exit preview mode\"\n size=\"l\"\n >\n <Icon size={24} data={Xmark} />\n </Button>\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
+ {"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
- export interface GravityBlocksWrapperProps {
5
- isBranded?: boolean;
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, isBranded, animated } = globalDefaults;
9
+ const { background, navigation, ...generalGlobalDefaults } = globalDefaults;
10
+ const { renderMenu, ...generalWrapperProps } = wrapperProps;
10
11
  return [
11
12
  (0, _1.generalExtension)({
12
- globalDefaults: { isBranded, animated },
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;AAIzB,iCAAiG;AAoBjG,+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,SAAS,EAAE,QAAQ,EAAC,GAAG,cAAc,CAAC;IAErE,OAAO;QACH,IAAA,mBAAgB,EAAC;YACb,cAAc,EAAE,EAAC,SAAS,EAAE,QAAQ,EAAC;SACxC,CAAC;QACF,IAAA,sBAAmB,EAAC;YAChB,cAAc,EAAE,EAAC,UAAU,EAAC;SAC/B,CAAC;QACF,IAAA,sBAAmB,EAAC;YAChB,YAAY;YACZ,cAAc,EAAE,EAAC,UAAU,EAAC;SAC/B,CAAC;QACF,IAAA,qBAAkB,GAAE;KACvB,CAAC;AACN,CAAC,CAAC;AAtBW,QAAA,sBAAsB,0BAsBjC","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 {backgroundExtension, blockBaseExtension, generalExtension, navigationExtension} from '.';\n\nexport interface GravityBlocksWrapperProps {\n isBranded?: boolean;\n animated?: boolean;\n renderMenu?: () => React.ReactNode;\n microdata?: {\n contentUpdatedDate?: string;\n };\n}\n\nexport interface GravityBlocksGlobalConfig {\n background?: MediaProps;\n navigation?: NavigationData;\n isBranded?: boolean;\n animated?: boolean;\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, isBranded, animated} = globalDefaults;\n\n return [\n generalExtension({\n globalDefaults: {isBranded, animated},\n }),\n backgroundExtension({\n globalDefaults: {background},\n }),\n navigationExtension({\n wrapperProps,\n globalDefaults: {navigation},\n }),\n blockBaseExtension(),\n ];\n};\n"]}
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.g-button {
102
+ .pceditor-middle-screen__exit-preview-container {
103
103
  position: fixed;
104
- opacity: 0.5;
105
104
  top: 16px;
106
- right: 16px;
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: "normal-contrast", className: b('exit-preview'), onClick: togglePreviewMode, "aria-label": "Exit preview mode", title: "Exit preview mode", size: "l", children: _jsx(Icon, { size: 24, data: Xmark }) })), !initialized && (_jsx("div", { className: b('loading'), children: _jsx(Loader, { size: 'l' }) }))] }) }) })] }));
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;AAEvD,OAAO,EAAC,yBAAyB,EAAC,uCAAoC;AACtE,OAAO,EAAC,aAAa,EAAC,6CAAoC;AAC1D,OAAO,EAAC,kBAAkB,EAAC,0CAAuC;AAClE,OAAO,EAAC,QAAQ,EAAC,0BAAuB;AACxC,OAAO,OAAO,8BAA2B;AAEzC,OAAO,oBAAoB,CAAC;AAE5B,MAAM,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;AAEpC,mCAAmC;AACnC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAOhC,MAAM,YAAY,GAAG,CAAC,EAAC,SAAS,EAAE,SAAS,EAAoB,EAAE,EAAE;IAC/D,MAAM,EAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAC,GAAG,kBAAkB,EAAE,CAAC;IAChG,MAAM,EAAC,GAAG,EAAE,gBAAgB,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAChE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAwB,IAAI,CAAC,CAAC;IAC9E,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE9C,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAC7B,GAAG,EAAE,CAAC,CAAC;QACH,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI;QACrD,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG;QACzD,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG;QACxD,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG;KAC9D,CAAC,EACF,CAAC,aAAa,EAAE,IAAI,CAAC,CACxB,CAAC;IAEF,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAC9B,CAAC,SAAiB,EAAE,EAAE;QAClB,MAAM,YAAY,GAAG,SAAS,GAAG,GAAG,CAAC;QACrC,SAAS,CAAC,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACnF,CAAC,EACD,CAAC,SAAS,CAAC,CACd,CAAC;IAEF,yBAAyB,CAAC,WAAW,EAAE,CAAC,EAAC,MAAM,EAAE,SAAS,EAAC,EAAE,EAAE;QAC3D,QAAQ,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,yBAAyB,CAAC,SAAS,EAAE,CAAC,EAAC,MAAM,EAAE,SAAS,EAAC,EAAE,EAAE;QACzD,QAAQ,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACxC,OAAO,WAAW,KAAK,MAAM,CAAC;IAClC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,OAAO,CACH,eAAK,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,aAC7B,SAAS,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAC3B,cAAK,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,YACvB,KAAC,SAAS,KAAG,GACX,CACT,CAAC,CAAC,CAAC,IAAI,EACR,cAAK,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,EAAC,UAAU,EAAE,aAAa,EAAC,CAAC,YACrD,cAAK,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,YACxB,eACI,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE;4BACnB,MAAM,EAAE,CAAC,WAAW;4BACpB,UAAU,EAAE,aAAa;4BACzB,cAAc,EAAE,gBAAgB;yBACnC,CAAC,EACF,KAAK,EAAE,WAAW,aAElB,eACI,SAAS,EAAE,CAAC,CAAC,kBAAkB,EAAE,EAAC,UAAU,EAAE,aAAa,EAAC,CAAC,EAC7D,KAAK,EAAE,EAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAC,aAEpD,iBACI,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE;4CACd,IAAI,QAAQ,EAAE,CAAC;gDACX,gBAAgB,CAAC,QAAQ,CAAC,CAAC;4CAC/B,CAAC;wCACL,CAAC,EACD,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAC,UAAU,EAAE,aAAa,EAAC,CAAC,EACnD,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,EAC9C,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAC3C,WAAW,EAAC,GAAG,EACf,KAAK,EAAC,yBAAyB,GACjC,EACD,CAAC,aAAa,IAAI,CACf,KAAC,OAAO,IAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,SAAS,GAAI,CACjE,IACC,EACL,aAAa,IAAI,CACd,KAAC,MAAM,IACH,IAAI,EAAC,iBAAiB,EACtB,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,EAC5B,OAAO,EAAE,iBAAiB,gBACf,mBAAmB,EAC9B,KAAK,EAAC,mBAAmB,EACzB,IAAI,EAAC,GAAG,YAER,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,GAAI,GAC1B,CACZ,EACA,CAAC,WAAW,IAAI,CACb,cAAK,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,YACxB,KAAC,MAAM,IAAC,IAAI,EAAE,GAAG,GAAI,GACnB,CACT,IACC,GACJ,GACJ,IACJ,CACT,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {Xmark} from '@gravity-ui/icons';\nimport {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 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 <Button\n view=\"normal-contrast\"\n className={b('exit-preview')}\n onClick={togglePreviewMode}\n aria-label=\"Exit preview mode\"\n title=\"Exit preview mode\"\n size=\"l\"\n >\n <Icon size={24} data={Xmark} />\n </Button>\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
+ {"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
- export interface GravityBlocksWrapperProps {
5
- isBranded?: boolean;
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, isBranded, animated } = globalDefaults;
5
+ const { background, navigation, ...generalGlobalDefaults } = globalDefaults;
6
+ const { renderMenu, ...generalWrapperProps } = wrapperProps;
6
7
  return [
7
8
  generalExtension({
8
- globalDefaults: { isBranded, animated },
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;AAE1C,OAAO,EAAC,mBAAmB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,mBAAmB,EAAC,mBAAU;AAoBjG,+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,SAAS,EAAE,QAAQ,EAAC,GAAG,cAAc,CAAC;IAErE,OAAO;QACH,gBAAgB,CAAC;YACb,cAAc,EAAE,EAAC,SAAS,EAAE,QAAQ,EAAC;SACxC,CAAC;QACF,mBAAmB,CAAC;YAChB,cAAc,EAAE,EAAC,UAAU,EAAC;SAC/B,CAAC;QACF,mBAAmB,CAAC;YAChB,YAAY;YACZ,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 {backgroundExtension, blockBaseExtension, generalExtension, navigationExtension} from '.';\n\nexport interface GravityBlocksWrapperProps {\n isBranded?: boolean;\n animated?: boolean;\n renderMenu?: () => React.ReactNode;\n microdata?: {\n contentUpdatedDate?: string;\n };\n}\n\nexport interface GravityBlocksGlobalConfig {\n background?: MediaProps;\n navigation?: NavigationData;\n isBranded?: boolean;\n animated?: boolean;\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, isBranded, animated} = globalDefaults;\n\n return [\n generalExtension({\n globalDefaults: {isBranded, animated},\n }),\n backgroundExtension({\n globalDefaults: {background},\n }),\n navigationExtension({\n wrapperProps,\n globalDefaults: {navigation},\n }),\n blockBaseExtension(),\n ];\n};\n"]}
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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/page-constructor",
3
- "version": "8.5.0-alpha.10",
3
+ "version": "8.5.0-alpha.12",
4
4
  "description": "Gravity UI Page Constructor",
5
5
  "license": "MIT",
6
6
  "type": "commonjs",