@gravity-ui/page-constructor 5.14.4-alpha.1 → 5.14.4-alpha.3
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/blocks/Banner/index.js +1 -0
- package/build/cjs/blocks/CardLayout/index.js +21 -3
- package/build/cjs/blocks/Companies/index.js +1 -0
- package/build/cjs/blocks/ContentLayout/index.d.ts +31 -1
- package/build/cjs/blocks/ContentLayout/index.js +64 -1
- package/build/cjs/blocks/ExtendedFeatures/index.d.ts +48 -2
- package/build/cjs/blocks/ExtendedFeatures/index.js +60 -2
- package/build/cjs/blocks/FilterBlock/index.d.ts +18 -0
- package/build/cjs/blocks/FilterBlock/index.js +81 -1
- package/build/cjs/blocks/Form/index.d.ts +1 -0
- package/build/cjs/blocks/Form/index.js +1 -0
- package/build/cjs/blocks/Header/index.d.ts +11 -0
- package/build/cjs/blocks/Header/index.js +18 -0
- package/build/cjs/blocks/HeaderSlider/index.d.ts +1 -0
- package/build/cjs/blocks/HeaderSlider/index.js +1 -0
- package/build/cjs/blocks/Icons/Icons.js +2 -2
- package/build/cjs/blocks/Icons/index.d.ts +7 -0
- package/build/cjs/blocks/Icons/index.js +44 -0
- package/build/cjs/blocks/Info/index.d.ts +1 -0
- package/build/cjs/blocks/Info/index.js +1 -0
- package/build/cjs/blocks/Map/index.d.ts +1 -0
- package/build/cjs/blocks/Map/index.js +1 -0
- package/build/cjs/blocks/Media/index.d.ts +26 -2
- package/build/cjs/blocks/Media/index.js +39 -4
- package/build/cjs/blocks/PromoFeaturesBlock/index.d.ts +11 -1
- package/build/cjs/blocks/PromoFeaturesBlock/index.js +31 -1
- package/build/cjs/blocks/Questions/index.d.ts +1 -0
- package/build/cjs/blocks/Questions/index.js +1 -0
- package/build/cjs/blocks/Share/index.d.ts +1 -0
- package/build/cjs/blocks/Share/index.js +1 -0
- package/build/cjs/blocks/Slider/index.d.ts +19 -0
- package/build/cjs/blocks/Slider/index.js +31 -0
- package/build/cjs/blocks/Table/index.d.ts +10 -0
- package/build/cjs/blocks/Table/index.js +17 -0
- package/build/cjs/blocks/Tabs/index.d.ts +1 -0
- package/build/cjs/blocks/Tabs/index.js +1 -0
- package/build/cjs/common/types/forms.d.ts +1 -0
- package/build/cjs/constructor-items.d.ts +2 -6
- package/build/cjs/constructor-items.js +2 -2
- package/build/cjs/editor-v2/components/BigOverlay/BigOverlay.js +6 -3
- package/build/cjs/editor-v2/components/BlocksList/BlocksList.css +27 -1
- package/build/cjs/editor-v2/components/BlocksList/BlocksList.js +34 -2
- package/build/cjs/editor-v2/components/MiddleScreen/MiddleScreen.css +5 -3
- package/build/cjs/editor-v2/components/MiddleScreen/MiddleScreen.js +16 -11
- package/build/cjs/editor-v2/components/Panels/Panels.css +36 -0
- package/build/cjs/editor-v2/components/Panels/Panels.d.ts +8 -0
- package/build/cjs/editor-v2/components/Panels/Panels.js +41 -0
- package/build/cjs/editor-v2/components/SourceCode/SourceCode.css +18 -6
- package/build/cjs/editor-v2/components/SourceCode/SourceCode.js +26 -5
- package/build/cjs/editor-v2/components/TopBar/TopBar.d.ts +4 -0
- package/build/cjs/editor-v2/components/TopBar/TopBar.js +2 -2
- package/build/cjs/editor-v2/components/Tree/Tree.css +11 -0
- package/build/cjs/editor-v2/components/Tree/Tree.js +10 -2
- package/build/cjs/editor-v2/components/ViewSwitches/ViewSwitches.css +7 -0
- package/build/cjs/editor-v2/components/ViewSwitches/ViewSwitches.d.ts +4 -2
- package/build/cjs/editor-v2/components/ViewSwitches/ViewSwitches.js +11 -14
- package/build/cjs/editor-v2/constants.d.ts +1 -0
- package/build/cjs/editor-v2/constants.js +4 -0
- package/build/cjs/editor-v2/containers/Editor/Editor.css +0 -10
- package/build/cjs/editor-v2/containers/Editor/Editor.js +2 -13
- package/build/cjs/editor-v2/context/contentConfig/store.d.ts +1 -0
- package/build/cjs/editor-v2/context/contentConfig/store.js +3 -0
- package/build/cjs/editor-v2/context/iframeContext/store.d.ts +4 -0
- package/build/cjs/editor-v2/context/iframeContext/store.js +27 -1
- package/build/cjs/sub-blocks/BackgroundCard/index.js +2 -0
- package/build/cjs/sub-blocks/BannerCard/index.js +1 -0
- package/build/cjs/sub-blocks/BasicCard/index.js +1 -0
- package/build/cjs/sub-blocks/Content/index.js +1 -0
- package/build/cjs/sub-blocks/ImageCard/index.js +1 -0
- package/build/cjs/sub-blocks/LayoutItem/index.js +7 -2
- package/build/cjs/sub-blocks/MediaCard/index.js +2 -0
- package/build/cjs/sub-blocks/PriceCard/index.js +1 -0
- package/build/cjs/sub-blocks/PriceDetailed/index.js +1 -0
- package/build/cjs/sub-blocks/Quote/index.js +1 -0
- package/build/esm/blocks/Banner/index.js +1 -0
- package/build/esm/blocks/CardLayout/index.js +21 -3
- package/build/esm/blocks/Companies/index.js +1 -0
- package/build/esm/blocks/ContentLayout/index.d.ts +31 -1
- package/build/esm/blocks/ContentLayout/index.js +64 -1
- package/build/esm/blocks/ExtendedFeatures/index.d.ts +48 -2
- package/build/esm/blocks/ExtendedFeatures/index.js +60 -2
- package/build/esm/blocks/FilterBlock/index.d.ts +18 -0
- package/build/esm/blocks/FilterBlock/index.js +81 -1
- package/build/esm/blocks/Form/index.d.ts +1 -0
- package/build/esm/blocks/Form/index.js +1 -0
- package/build/esm/blocks/Header/index.d.ts +11 -0
- package/build/esm/blocks/Header/index.js +18 -0
- package/build/esm/blocks/HeaderSlider/index.d.ts +1 -0
- package/build/esm/blocks/HeaderSlider/index.js +1 -0
- package/build/esm/blocks/Icons/Icons.js +2 -2
- package/build/esm/blocks/Icons/index.d.ts +7 -0
- package/build/esm/blocks/Icons/index.js +44 -0
- package/build/esm/blocks/Info/index.d.ts +1 -0
- package/build/esm/blocks/Info/index.js +1 -0
- package/build/esm/blocks/Map/index.d.ts +1 -0
- package/build/esm/blocks/Map/index.js +1 -0
- package/build/esm/blocks/Media/index.d.ts +26 -2
- package/build/esm/blocks/Media/index.js +39 -4
- package/build/esm/blocks/PromoFeaturesBlock/index.d.ts +11 -1
- package/build/esm/blocks/PromoFeaturesBlock/index.js +31 -1
- package/build/esm/blocks/Questions/index.d.ts +1 -0
- package/build/esm/blocks/Questions/index.js +1 -0
- package/build/esm/blocks/Share/index.d.ts +1 -0
- package/build/esm/blocks/Share/index.js +1 -0
- package/build/esm/blocks/Slider/index.d.ts +19 -0
- package/build/esm/blocks/Slider/index.js +31 -0
- package/build/esm/blocks/Table/index.d.ts +10 -0
- package/build/esm/blocks/Table/index.js +17 -0
- package/build/esm/blocks/Tabs/index.d.ts +1 -0
- package/build/esm/blocks/Tabs/index.js +1 -0
- package/build/esm/common/types/forms.d.ts +1 -0
- package/build/esm/constructor-items.d.ts +2 -6
- package/build/esm/constructor-items.js +1 -1
- package/build/esm/editor-v2/components/BigOverlay/BigOverlay.js +7 -4
- package/build/esm/editor-v2/components/BlocksList/BlocksList.css +27 -1
- package/build/esm/editor-v2/components/BlocksList/BlocksList.js +35 -3
- package/build/esm/editor-v2/components/MiddleScreen/MiddleScreen.css +5 -3
- package/build/esm/editor-v2/components/MiddleScreen/MiddleScreen.js +16 -11
- package/build/esm/editor-v2/components/Panels/Panels.css +36 -0
- package/build/esm/editor-v2/components/Panels/Panels.d.ts +9 -0
- package/build/esm/editor-v2/components/Panels/Panels.js +37 -0
- package/build/esm/editor-v2/components/SourceCode/SourceCode.css +18 -6
- package/build/esm/editor-v2/components/SourceCode/SourceCode.js +27 -6
- package/build/esm/editor-v2/components/TopBar/TopBar.d.ts +4 -0
- package/build/esm/editor-v2/components/TopBar/TopBar.js +2 -2
- package/build/esm/editor-v2/components/Tree/Tree.css +11 -0
- package/build/esm/editor-v2/components/Tree/Tree.js +11 -3
- package/build/esm/editor-v2/components/ViewSwitches/ViewSwitches.css +7 -0
- package/build/esm/editor-v2/components/ViewSwitches/ViewSwitches.d.ts +4 -2
- package/build/esm/editor-v2/components/ViewSwitches/ViewSwitches.js +13 -15
- package/build/esm/editor-v2/constants.d.ts +1 -0
- package/build/esm/editor-v2/constants.js +1 -0
- package/build/esm/editor-v2/containers/Editor/Editor.css +0 -10
- package/build/esm/editor-v2/containers/Editor/Editor.js +2 -13
- package/build/esm/editor-v2/context/contentConfig/store.d.ts +1 -0
- package/build/esm/editor-v2/context/contentConfig/store.js +3 -0
- package/build/esm/editor-v2/context/iframeContext/store.d.ts +4 -0
- package/build/esm/editor-v2/context/iframeContext/store.js +27 -1
- package/build/esm/sub-blocks/BackgroundCard/index.js +2 -0
- package/build/esm/sub-blocks/BannerCard/index.js +1 -0
- package/build/esm/sub-blocks/BasicCard/index.js +1 -0
- package/build/esm/sub-blocks/Content/index.js +1 -0
- package/build/esm/sub-blocks/ImageCard/index.js +1 -0
- package/build/esm/sub-blocks/LayoutItem/index.js +7 -2
- package/build/esm/sub-blocks/MediaCard/index.js +2 -0
- package/build/esm/sub-blocks/PriceCard/index.js +1 -0
- package/build/esm/sub-blocks/PriceDetailed/index.js +1 -0
- package/build/esm/sub-blocks/Quote/index.js +1 -0
- package/package.json +1 -1
- package/widget/index.js +1 -1
- package/build/cjs/sub-blocks/LayoutItem/form.d.ts +0 -8
- package/build/cjs/sub-blocks/LayoutItem/form.js +0 -14
- package/build/esm/sub-blocks/LayoutItem/form.d.ts +0 -8
- package/build/esm/sub-blocks/LayoutItem/form.js +0 -11
|
@@ -4,10 +4,10 @@ import Source from '../Source/Source';
|
|
|
4
4
|
import ViewSwitches from '../ViewSwitches/ViewSwitches';
|
|
5
5
|
import './TopBar.css';
|
|
6
6
|
const b = block('topbar');
|
|
7
|
-
const TopBar = ({ className }) => {
|
|
7
|
+
const TopBar = ({ zoom, onDecreaseZoom, onIncreaseZoom, onZoomUpdate, className, }) => {
|
|
8
8
|
return (React.createElement("div", { className: b(null, className) },
|
|
9
9
|
React.createElement("div", { className: b('switches') },
|
|
10
|
-
React.createElement(ViewSwitches,
|
|
10
|
+
React.createElement(ViewSwitches, { onZoomUpdate: onZoomUpdate, onDecreaseZoom: onDecreaseZoom, onIncreaseZoom: onIncreaseZoom, zoom: zoom })),
|
|
11
11
|
React.createElement(Source, { className: b('source') })));
|
|
12
12
|
};
|
|
13
13
|
export default TopBar;
|
|
@@ -13,6 +13,17 @@ body {
|
|
|
13
13
|
.pc-tree {
|
|
14
14
|
padding: 12px;
|
|
15
15
|
}
|
|
16
|
+
.pc-tree__head {
|
|
17
|
+
margin-bottom: 10px;
|
|
18
|
+
display: flex;
|
|
19
|
+
align-items: center;
|
|
20
|
+
justify-content: space-between;
|
|
21
|
+
}
|
|
22
|
+
.pc-tree__title {
|
|
23
|
+
font-size: var(--g-text-subheader-3-font-size);
|
|
24
|
+
line-height: var(--g-text-subheader-3-line-height);
|
|
25
|
+
font-weight: var(--g-text-subheader-font-weight);
|
|
26
|
+
}
|
|
16
27
|
.pc-tree__item {
|
|
17
28
|
padding: 8px;
|
|
18
29
|
margin-bottom: 8px;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { TrashBin } from '@gravity-ui/icons';
|
|
3
|
+
import { Button, Card, Icon } from '@gravity-ui/uikit';
|
|
3
4
|
import { block } from '../../../utils';
|
|
4
5
|
import { useContentConfigStore } from '../../context/contentConfig';
|
|
5
6
|
import './Tree.css';
|
|
@@ -18,13 +19,20 @@ const generateTree = (items) => {
|
|
|
18
19
|
});
|
|
19
20
|
};
|
|
20
21
|
const Tree = (_p) => {
|
|
21
|
-
const { config } = useContentConfigStore();
|
|
22
|
+
const { config, resetBlocks } = useContentConfigStore();
|
|
22
23
|
const blockTree = generateTree(config.blocks);
|
|
23
24
|
const renderTree = (items, deepLevel = 0) => {
|
|
24
25
|
return items.map(({ type, children }, index) => (React.createElement(React.Fragment, { key: index },
|
|
25
26
|
React.createElement(Card, { className: b('item', { deep: deepLevel }) }, type),
|
|
26
27
|
children && renderTree(children, deepLevel + 1))));
|
|
27
28
|
};
|
|
28
|
-
return React.createElement("div", { className: b() },
|
|
29
|
+
return (React.createElement("div", { className: b() },
|
|
30
|
+
React.createElement("div", { className: b('head') },
|
|
31
|
+
React.createElement("div", { className: b('title') }, "Tree"),
|
|
32
|
+
React.createElement("div", { className: b('actions') },
|
|
33
|
+
React.createElement(Button, { view: "outlined-danger", onClick: () => resetBlocks() },
|
|
34
|
+
React.createElement(Icon, { data: TrashBin }),
|
|
35
|
+
"Clear all"))),
|
|
36
|
+
React.createElement("div", { className: b('cards') }, renderTree(blockTree))));
|
|
29
37
|
};
|
|
30
38
|
export default Tree;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { RadioButtonOption } from '@gravity-ui/uikit';
|
|
3
2
|
import { ClassNameProps } from '../../../models';
|
|
4
3
|
import './ViewSwitches.css';
|
|
5
4
|
interface ViewSwitchesProps extends ClassNameProps {
|
|
5
|
+
onZoomUpdate: (zoom: number) => void;
|
|
6
|
+
onDecreaseZoom: () => void;
|
|
7
|
+
onIncreaseZoom: () => void;
|
|
8
|
+
zoom: number;
|
|
6
9
|
}
|
|
7
|
-
export declare const options2: RadioButtonOption[];
|
|
8
10
|
declare const ViewSwitches: React.FC<ViewSwitchesProps>;
|
|
9
11
|
export default ViewSwitches;
|
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import { Icon,
|
|
2
|
+
import { Minus, Plus } from '@gravity-ui/icons';
|
|
3
|
+
import { Button, Icon, Select } from '@gravity-ui/uikit';
|
|
4
4
|
import { block } from '../../../utils';
|
|
5
|
+
import { ZOOM_STEPS } from '../../constants';
|
|
5
6
|
import './ViewSwitches.css';
|
|
6
7
|
const b = block('view-switches');
|
|
7
|
-
const
|
|
8
|
-
{ value: 'edit-mode', content: React.createElement(Icon, { data: SquareDashedText }) },
|
|
9
|
-
{ value: 'preview-mode', content: React.createElement(Icon, { data: Eye }) },
|
|
10
|
-
];
|
|
11
|
-
export const options2 = [
|
|
12
|
-
{ value: 'desktop-mode', content: React.createElement(Icon, { data: Display }) },
|
|
13
|
-
{ value: 'tablet-mode', content: React.createElement(Icon, { data: Square }) },
|
|
14
|
-
{ value: 'phone-mode', content: React.createElement(Icon, { data: Smartphone }) },
|
|
15
|
-
];
|
|
16
|
-
// TODO: To be done
|
|
17
|
-
const ViewSwitches = ({ className }) => {
|
|
8
|
+
const ViewSwitches = ({ zoom, onIncreaseZoom, onDecreaseZoom, onZoomUpdate, className, }) => {
|
|
18
9
|
return (React.createElement("div", { className: b(null, className) },
|
|
19
|
-
React.createElement(
|
|
20
|
-
|
|
10
|
+
React.createElement("div", { className: b('zoom') },
|
|
11
|
+
React.createElement(Button, { view: 'flat', onClick: onDecreaseZoom },
|
|
12
|
+
React.createElement(Icon, { data: Minus })),
|
|
13
|
+
React.createElement(Select, { multiple: false, value: [String(zoom)], options: ZOOM_STEPS.map((step) => ({
|
|
14
|
+
value: String(step),
|
|
15
|
+
content: `${String(step)}%`,
|
|
16
|
+
})), onUpdate: (value) => onZoomUpdate(Number(value)) }),
|
|
17
|
+
React.createElement(Button, { view: 'flat', onClick: onIncreaseZoom },
|
|
18
|
+
React.createElement(Icon, { data: Plus })))));
|
|
21
19
|
};
|
|
22
20
|
export default ViewSwitches;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const ZOOM_STEPS: number[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const ZOOM_STEPS = [25, 33, 50, 75, 100, 125, 150, 200, 250, 300];
|
|
@@ -36,16 +36,6 @@ body {
|
|
|
36
36
|
.pc-editor__canvas {
|
|
37
37
|
flex: 1;
|
|
38
38
|
}
|
|
39
|
-
.pc-editor__draggable {
|
|
40
|
-
width: 12px;
|
|
41
|
-
height: 100%;
|
|
42
|
-
cursor: col-resize;
|
|
43
|
-
background-color: var(--g-color-line-generic);
|
|
44
|
-
display: flex;
|
|
45
|
-
align-items: center;
|
|
46
|
-
justify-content: center;
|
|
47
|
-
color: var(--g-color-base-background);
|
|
48
|
-
}
|
|
49
39
|
.pc-editor__overlay {
|
|
50
40
|
position: absolute;
|
|
51
41
|
height: 100%;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import React, { useCallback } from 'react';
|
|
2
|
-
import { Grip } from '@gravity-ui/icons';
|
|
3
|
-
import { Panel, PanelGroup, PanelResizeHandle } from 'react-resizable-panels';
|
|
4
2
|
import { ActionTypes } from '../../../common/types';
|
|
5
3
|
import { block } from '../../../utils';
|
|
6
4
|
import BigOverlay from '../../components/BigOverlay/BigOverlay';
|
|
7
5
|
import MiddleScreen from '../../components/MiddleScreen/MiddleScreen';
|
|
6
|
+
import { Panels } from '../../components/Panels/Panels';
|
|
8
7
|
import { Sidebar } from '../../components/Sidebar/Sidebar';
|
|
9
8
|
import { ContentConfigProvider } from '../../context/contentConfig';
|
|
10
9
|
import { EditorProvider, useEditorStore } from '../../context/editorContext';
|
|
@@ -40,17 +39,7 @@ const EditorView = (_props) => {
|
|
|
40
39
|
}, [manipulateOverlayMode, sendMessage]);
|
|
41
40
|
return (React.createElement("div", { className: b(), onMouseUp: onMouseUp, onMouseMove: onMouseMove },
|
|
42
41
|
React.createElement("div", { className: b('body') },
|
|
43
|
-
React.createElement(
|
|
44
|
-
React.createElement(Panel, { collapsible: true, defaultSize: 25, minSize: 15 },
|
|
45
|
-
React.createElement(Sidebar, { position: 'left' })),
|
|
46
|
-
React.createElement(PanelResizeHandle, { className: b('draggable') },
|
|
47
|
-
React.createElement(Grip, { className: b('grip') })),
|
|
48
|
-
React.createElement(Panel, { minSize: 20 },
|
|
49
|
-
React.createElement(MiddleScreen, null)),
|
|
50
|
-
React.createElement(PanelResizeHandle, { className: b('draggable') },
|
|
51
|
-
React.createElement(Grip, { className: b('grip') })),
|
|
52
|
-
React.createElement(Panel, { collapsible: true, minSize: 15, defaultSize: 25 },
|
|
53
|
-
React.createElement(Sidebar, { position: 'right', startMenu: "block-config" })))),
|
|
42
|
+
React.createElement(Panels, { left: React.createElement(Sidebar, { position: 'left' }), right: React.createElement(Sidebar, { position: 'right', startMenu: "block-config" }), middle: React.createElement(MiddleScreen, null) })),
|
|
54
43
|
React.createElement(BigOverlay, { className: b('overlay') })));
|
|
55
44
|
};
|
|
56
45
|
export const Editor = (props) => {
|
|
@@ -18,6 +18,7 @@ export interface ContentConfigMethods extends WithStoreReducer {
|
|
|
18
18
|
duplicateBlock: (path: number[]) => void;
|
|
19
19
|
reorderBlock: (path: number[], destination: number[]) => void;
|
|
20
20
|
updateField: (path: string, value: DynamicFormValue) => void;
|
|
21
|
+
resetBlocks: () => void;
|
|
21
22
|
}
|
|
22
23
|
export type ContentConfigStore = ContentConfigState & ContentConfigMethods;
|
|
23
24
|
export declare const createContentConfigStore: (overrideInitialState?: Partial<ContentConfigState> | undefined) => import("zustand").UseBoundStore<Omit<Omit<import("zustand").StoreApi<ContentConfigState & ContentConfigMethods>, "subscribe"> & {
|
|
@@ -57,6 +57,9 @@ export const createContentConfigStore = initializeStore({
|
|
|
57
57
|
}
|
|
58
58
|
set((state) => (Object.assign(Object.assign({}, state), { config: Object.assign(Object.assign({}, state.config), { blocks: newBlocksConfig }) })));
|
|
59
59
|
},
|
|
60
|
+
resetBlocks: () => {
|
|
61
|
+
set((state) => (Object.assign(Object.assign({}, state), { config: Object.assign(Object.assign({}, state.config), { blocks: [] }) })));
|
|
62
|
+
},
|
|
60
63
|
reducer: function (action) {
|
|
61
64
|
switch (action.type) {
|
|
62
65
|
// Insert Actions
|
|
@@ -2,9 +2,13 @@ import { WithStoreReducer } from '../../../common/types';
|
|
|
2
2
|
export interface IframeState {
|
|
3
3
|
url: string;
|
|
4
4
|
height?: number;
|
|
5
|
+
zoom: number;
|
|
5
6
|
}
|
|
6
7
|
export interface IframeMethods extends WithStoreReducer {
|
|
7
8
|
setUrl: (url: string) => void;
|
|
9
|
+
setZoom: (zoom: number) => void;
|
|
10
|
+
increaseZoom: () => void;
|
|
11
|
+
decreaseZoom: () => void;
|
|
8
12
|
}
|
|
9
13
|
export type IframeStore = IframeState & IframeMethods;
|
|
10
14
|
export declare const createIframeStore: (overrideInitialState?: Partial<IframeState> | undefined) => import("zustand").UseBoundStore<Omit<Omit<import("zustand").StoreApi<IframeState & IframeMethods>, "subscribe"> & {
|
|
@@ -1,9 +1,35 @@
|
|
|
1
1
|
import { ActionTypes } from '../../../common/types';
|
|
2
|
+
import { ZOOM_STEPS } from '../../constants';
|
|
2
3
|
import { initializeStore } from '../../utils/store';
|
|
3
4
|
export const createIframeStore = initializeStore({
|
|
4
5
|
url: '',
|
|
5
6
|
height: 400,
|
|
6
|
-
|
|
7
|
+
zoom: 100,
|
|
8
|
+
}, (set, get) => ({
|
|
9
|
+
setZoom: function (zoom) {
|
|
10
|
+
if (zoom > 0) {
|
|
11
|
+
set((state) => (Object.assign(Object.assign({}, state), { zoom })));
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
increaseZoom: function () {
|
|
15
|
+
const currentZoom = get().zoom;
|
|
16
|
+
for (const step of ZOOM_STEPS) {
|
|
17
|
+
if (currentZoom < step) {
|
|
18
|
+
get().setZoom(step);
|
|
19
|
+
break;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
decreaseZoom: function () {
|
|
24
|
+
const currentZoom = get().zoom;
|
|
25
|
+
const reverseSteps = ZOOM_STEPS.slice().reverse();
|
|
26
|
+
for (const step of reverseSteps) {
|
|
27
|
+
if (currentZoom > step) {
|
|
28
|
+
get().setZoom(step);
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
},
|
|
7
33
|
setUrl: (url) => set((state) => (Object.assign(Object.assign({}, state), { url }))),
|
|
8
34
|
reducer: (action) => {
|
|
9
35
|
switch (action.type) {
|
|
@@ -6,10 +6,12 @@ const BackgroundCardConfig = {
|
|
|
6
6
|
schema: {
|
|
7
7
|
name: 'Background Card',
|
|
8
8
|
inputs: generateFromAJV(BackgroundCardSchema['background-card']),
|
|
9
|
+
group: 'cards',
|
|
9
10
|
default: {
|
|
10
11
|
title: 'Background Card',
|
|
11
12
|
text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',
|
|
12
13
|
additionalInfo: 'Additional info',
|
|
14
|
+
backgroundColor: '#F0F0F0',
|
|
13
15
|
},
|
|
14
16
|
},
|
|
15
17
|
};
|
|
@@ -5,11 +5,16 @@ const LayoutItemConfig = {
|
|
|
5
5
|
component: LayoutItem,
|
|
6
6
|
schema: {
|
|
7
7
|
name: 'Layout Item',
|
|
8
|
+
group: 'cards',
|
|
8
9
|
inputs: generateFromAJV(LayoutItemSchema),
|
|
9
10
|
default: {
|
|
11
|
+
type: 'layout-item',
|
|
10
12
|
content: {
|
|
11
|
-
title: '
|
|
12
|
-
text: '
|
|
13
|
+
title: 'Lorem ipsum',
|
|
14
|
+
text: 'Dolor sit amet',
|
|
15
|
+
},
|
|
16
|
+
media: {
|
|
17
|
+
image: 'https://storage.yandexcloud.net/yc-www-community-images/event_ecaf1ef1-bc3a-40fa-adef-827b0959e6c3.jpg',
|
|
13
18
|
},
|
|
14
19
|
},
|
|
15
20
|
},
|
|
@@ -5,12 +5,14 @@ const MediaCardConfig = {
|
|
|
5
5
|
component: MediaCard,
|
|
6
6
|
schema: {
|
|
7
7
|
name: 'Media Card',
|
|
8
|
+
group: 'cards',
|
|
8
9
|
inputs: generateFromAJV(MediaCardSchema['media-card']),
|
|
9
10
|
default: {
|
|
10
11
|
content: {
|
|
11
12
|
title: 'Media Card',
|
|
12
13
|
text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',
|
|
13
14
|
},
|
|
15
|
+
image: 'https://storage.yandexcloud.net/yc-www-community-images/event_ecaf1ef1-bc3a-40fa-adef-827b0959e6c3.jpg',
|
|
14
16
|
},
|
|
15
17
|
},
|
|
16
18
|
};
|