@gravity-ui/page-constructor 3.0.0-alpha.5 → 4.0.0-beta.0
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/CHANGELOG.md +48 -0
- package/README.md +1 -1
- package/build/cjs/blocks/CardLayout/CardLayout.js +1 -1
- package/build/cjs/blocks/CardLayout/schema.d.ts +2 -2
- package/build/cjs/blocks/CardLayout/schema.js +1 -1
- package/build/cjs/blocks/FilterBlock/FilterBlock.js +9 -13
- package/build/cjs/blocks/Header/schema.d.ts +9 -0
- package/build/cjs/blocks/HeaderSlider/schema.d.ts +3 -0
- package/build/cjs/blocks/Media/schema.d.ts +6 -0
- package/build/cjs/blocks/PromoFeaturesBlock/schema.d.ts +3 -0
- package/build/cjs/blocks/Tabs/schema.d.ts +3 -0
- package/build/cjs/components/BackgroundImage/BackgroundImage.js +2 -2
- package/build/cjs/components/BlockBase/BlockBase.d.ts +3 -2
- package/build/cjs/components/BlockBase/BlockBase.js +4 -2
- package/build/cjs/components/FullscreenImage/{FullScreenImage.css → FullscreenImage.css} +13 -13
- package/build/cjs/components/FullscreenImage/FullscreenImage.d.ts +3 -3
- package/build/cjs/components/FullscreenImage/FullscreenImage.js +7 -7
- package/build/cjs/components/FullscreenImage/i18n/index.js +1 -1
- package/build/cjs/components/FullscreenMedia/FullscreenMedia.d.ts +9 -0
- package/build/cjs/components/FullscreenMedia/{FullScreenMedia.js → FullscreenMedia.js} +5 -5
- package/build/cjs/components/Image/Image.d.ts +1 -0
- package/build/cjs/components/Image/Image.js +2 -2
- package/build/cjs/components/Media/FullscreenVideo/FullscreenVideo.d.ts +4 -0
- package/build/cjs/components/Media/FullscreenVideo/FullscreenVideo.js +10 -0
- package/build/cjs/components/Media/Image/Image.d.ts +1 -0
- package/build/cjs/components/Media/Image/Image.js +10 -3
- package/build/cjs/components/Media/Media.js +25 -5
- package/build/cjs/components/Media/Video/Video.d.ts +1 -1
- package/build/cjs/components/VideoBlock/VideoBlock.d.ts +1 -1
- package/build/cjs/components/VideoBlock/VideoBlock.js +3 -3
- package/build/cjs/components/index.d.ts +1 -1
- package/build/cjs/components/index.js +3 -3
- package/build/cjs/constructor-items.d.ts +1 -1
- package/build/cjs/containers/Loadable/Loadable.d.ts +2 -2
- package/build/cjs/containers/PageConstructor/PageConstructor.js +5 -3
- package/build/cjs/containers/PageConstructor/components/ConstructorBlocks/ConstructorBlocks.js +3 -2
- package/build/cjs/containers/PageConstructor/components/ConstructorItem/ConstructorItem.d.ts +1 -1
- package/build/cjs/containers/PageConstructor/components/ConstructorItem/ConstructorItem.js +5 -5
- package/build/cjs/context/innerContext/InnerContext.d.ts +2 -1
- package/build/cjs/customization/BlockDecoration.d.ts +3 -0
- package/build/cjs/customization/BlockDecoration.js +22 -0
- package/build/cjs/editor/Components/AddBlock/AddBlock.css +82 -0
- package/build/cjs/editor/Components/AddBlock/AddBlock.d.ts +7 -0
- package/build/cjs/editor/Components/AddBlock/AddBlock.js +43 -0
- package/build/cjs/editor/Components/EditBlock/EditBlock.css +47 -0
- package/build/cjs/editor/Components/EditBlock/EditBlock.d.ts +4 -0
- package/build/cjs/editor/Components/EditBlock/EditBlock.js +32 -0
- package/build/cjs/editor/Containers/Editor.d.ts +2 -0
- package/build/cjs/editor/Containers/Editor.js +24 -0
- package/build/cjs/editor/data/index.d.ts +13 -0
- package/build/cjs/editor/data/index.js +27 -0
- package/build/cjs/editor/data/previews/default-preview.d.ts +3 -0
- package/build/cjs/editor/data/previews/default-preview.js +18 -0
- package/build/cjs/editor/data/previews/header-block.d.ts +3 -0
- package/build/cjs/editor/data/previews/header-block.js +19 -0
- package/build/cjs/editor/index.d.ts +2 -0
- package/build/cjs/editor/index.js +7 -0
- package/build/cjs/editor/store/index.d.ts +15 -0
- package/build/cjs/editor/store/index.js +32 -0
- package/build/cjs/editor/store/reducer.d.ts +41 -0
- package/build/cjs/editor/store/reducer.js +59 -0
- package/build/cjs/editor/store/utils.d.ts +12 -0
- package/build/cjs/editor/store/utils.js +34 -0
- package/build/cjs/editor/styles/mixins.css +0 -0
- package/build/cjs/editor/styles/variables.css +0 -0
- package/build/cjs/editor/types/index.d.ts +17 -0
- package/build/cjs/editor/types/index.js +2 -0
- package/build/cjs/editor/utils/index.d.ts +11 -0
- package/build/cjs/editor/utils/index.js +12 -0
- package/build/cjs/grid/Col/Col.d.ts +1 -1
- package/build/cjs/hooks/useMetrika.js +0 -7
- package/build/cjs/icons/Fullscreen.d.ts +2 -0
- package/build/cjs/icons/{FullScreen.js → Fullscreen.js} +3 -3
- package/build/cjs/icons/index.d.ts +1 -1
- package/build/cjs/icons/index.js +1 -1
- package/build/cjs/models/constructor-items/blocks.d.ts +2 -12
- package/build/cjs/models/constructor-items/blocks.js +0 -2
- package/build/cjs/models/constructor-items/common.d.ts +2 -1
- package/build/cjs/models/constructor-items/sub-blocks.d.ts +1 -1
- package/build/cjs/models/constructor.d.ts +4 -1
- package/build/cjs/models/customization.d.ts +9 -0
- package/build/cjs/models/customization.js +2 -0
- package/build/cjs/models/index.d.ts +1 -0
- package/build/cjs/models/index.js +1 -0
- package/build/cjs/schema/index.js +0 -1
- package/build/cjs/schema/validators/common.d.ts +3 -0
- package/build/cjs/schema/validators/common.js +3 -0
- package/build/cjs/sub-blocks/Content/Content.js +2 -2
- package/build/cjs/sub-blocks/LayoutItem/LayoutItem.d.ts +1 -1
- package/build/cjs/sub-blocks/LayoutItem/LayoutItem.js +4 -4
- package/build/cjs/sub-blocks/LayoutItem/schema.d.ts +4 -1
- package/build/cjs/sub-blocks/LayoutItem/schema.js +1 -1
- package/build/cjs/sub-blocks/LayoutItem/utils.d.ts +2 -2
- package/build/cjs/sub-blocks/LayoutItem/utils.js +6 -6
- package/build/cjs/sub-blocks/MediaCard/schema.d.ts +3 -0
- package/build/cjs/text-transform/transformers.js +2 -4
- package/build/cjs/utils/blocks.d.ts +4 -1
- package/build/cjs/utils/blocks.js +11 -1
- package/build/esm/blocks/CardLayout/CardLayout.js +1 -1
- package/build/esm/blocks/CardLayout/schema.d.ts +2 -2
- package/build/esm/blocks/CardLayout/schema.js +1 -1
- package/build/esm/blocks/FilterBlock/FilterBlock.js +10 -14
- package/build/esm/blocks/Header/schema.d.ts +9 -0
- package/build/esm/blocks/HeaderSlider/schema.d.ts +3 -0
- package/build/esm/blocks/Media/schema.d.ts +6 -0
- package/build/esm/blocks/PromoFeaturesBlock/schema.d.ts +3 -0
- package/build/esm/blocks/Tabs/Tabs.js +2 -2
- package/build/esm/blocks/Tabs/schema.d.ts +3 -0
- package/build/esm/components/BackgroundImage/BackgroundImage.js +2 -2
- package/build/esm/components/BlockBase/BlockBase.d.ts +3 -2
- package/build/esm/components/BlockBase/BlockBase.js +4 -2
- package/build/esm/components/FullscreenImage/{FullScreenImage.css → FullscreenImage.css} +13 -13
- package/build/esm/components/FullscreenImage/FullscreenImage.d.ts +4 -4
- package/build/esm/components/FullscreenImage/FullscreenImage.js +9 -9
- package/build/esm/components/FullscreenImage/i18n/index.js +1 -1
- package/build/esm/components/FullscreenMedia/FullscreenMedia.d.ts +10 -0
- package/build/esm/components/FullscreenMedia/{FullScreenMedia.js → FullscreenMedia.js} +7 -7
- package/build/esm/components/Image/Image.d.ts +1 -0
- package/build/esm/components/Image/Image.js +2 -2
- package/build/esm/components/Media/FullscreenVideo/FullscreenVideo.d.ts +4 -0
- package/build/esm/components/Media/FullscreenVideo/FullscreenVideo.js +7 -0
- package/build/esm/components/Media/Image/Image.d.ts +1 -0
- package/build/esm/components/Media/Image/Image.js +12 -5
- package/build/esm/components/Media/Media.js +25 -5
- package/build/esm/components/Media/Video/Video.d.ts +1 -1
- package/build/esm/components/VideoBlock/VideoBlock.d.ts +1 -1
- package/build/esm/components/VideoBlock/VideoBlock.js +3 -3
- package/build/esm/components/index.d.ts +1 -1
- package/build/esm/components/index.js +1 -1
- package/build/esm/constructor-items.d.ts +1 -1
- package/build/esm/containers/Loadable/Loadable.d.ts +2 -2
- package/build/esm/containers/PageConstructor/PageConstructor.js +6 -4
- package/build/esm/containers/PageConstructor/components/ConstructorBlocks/ConstructorBlocks.js +3 -2
- package/build/esm/containers/PageConstructor/components/ConstructorItem/ConstructorItem.d.ts +1 -1
- package/build/esm/containers/PageConstructor/components/ConstructorItem/ConstructorItem.js +5 -5
- package/build/esm/context/innerContext/InnerContext.d.ts +2 -1
- package/build/esm/customization/BlockDecoration.d.ts +3 -0
- package/build/esm/customization/BlockDecoration.js +17 -0
- package/build/esm/editor/Components/AddBlock/AddBlock.css +82 -0
- package/build/esm/editor/Components/AddBlock/AddBlock.d.ts +8 -0
- package/build/esm/editor/Components/AddBlock/AddBlock.js +41 -0
- package/build/esm/editor/Components/EditBlock/EditBlock.css +47 -0
- package/build/esm/editor/Components/EditBlock/EditBlock.d.ts +5 -0
- package/build/esm/editor/Components/EditBlock/EditBlock.js +30 -0
- package/build/esm/editor/Containers/Editor.d.ts +2 -0
- package/build/esm/editor/Containers/Editor.js +20 -0
- package/build/esm/editor/data/index.d.ts +13 -0
- package/build/esm/editor/data/index.js +24 -0
- package/build/esm/editor/data/previews/default-preview.d.ts +3 -0
- package/build/esm/editor/data/previews/default-preview.js +15 -0
- package/build/esm/editor/data/previews/header-block.d.ts +3 -0
- package/build/esm/editor/data/previews/header-block.js +16 -0
- package/build/esm/editor/index.d.ts +2 -0
- package/build/esm/editor/index.js +2 -0
- package/build/esm/editor/store/index.d.ts +15 -0
- package/build/esm/editor/store/index.js +28 -0
- package/build/esm/editor/store/reducer.d.ts +41 -0
- package/build/esm/editor/store/reducer.js +55 -0
- package/build/esm/editor/store/utils.d.ts +12 -0
- package/build/esm/editor/store/utils.js +26 -0
- package/build/esm/editor/styles/mixins.css +0 -0
- package/build/esm/editor/styles/variables.css +0 -0
- package/build/esm/editor/types/index.d.ts +17 -0
- package/build/esm/editor/types/index.js +1 -0
- package/build/esm/editor/utils/index.d.ts +11 -0
- package/build/esm/editor/utils/index.js +6 -0
- package/build/esm/grid/Col/Col.d.ts +1 -1
- package/build/esm/hooks/useMetrika.js +0 -7
- package/build/esm/icons/Fullscreen.d.ts +2 -0
- package/build/esm/icons/{FullScreen.js → Fullscreen.js} +1 -1
- package/build/esm/icons/index.d.ts +1 -1
- package/build/esm/icons/index.js +1 -1
- package/build/esm/models/constructor-items/blocks.d.ts +2 -12
- package/build/esm/models/constructor-items/blocks.js +0 -2
- package/build/esm/models/constructor-items/common.d.ts +2 -1
- package/build/esm/models/constructor-items/sub-blocks.d.ts +1 -1
- package/build/esm/models/constructor.d.ts +4 -1
- package/build/esm/models/customization.d.ts +9 -0
- package/build/esm/models/customization.js +1 -0
- package/build/esm/models/index.d.ts +1 -0
- package/build/esm/models/index.js +1 -0
- package/build/esm/schema/index.js +0 -1
- package/build/esm/schema/validators/common.d.ts +3 -0
- package/build/esm/schema/validators/common.js +3 -0
- package/build/esm/sub-blocks/Content/Content.js +2 -3
- package/build/esm/sub-blocks/LayoutItem/LayoutItem.d.ts +1 -1
- package/build/esm/sub-blocks/LayoutItem/LayoutItem.js +6 -6
- package/build/esm/sub-blocks/LayoutItem/schema.d.ts +4 -1
- package/build/esm/sub-blocks/LayoutItem/schema.js +1 -1
- package/build/esm/sub-blocks/LayoutItem/utils.d.ts +2 -2
- package/build/esm/sub-blocks/LayoutItem/utils.js +3 -3
- package/build/esm/sub-blocks/MediaCard/schema.d.ts +3 -0
- package/build/esm/text-transform/transformers.js +2 -4
- package/build/esm/utils/blocks.d.ts +4 -1
- package/build/esm/utils/blocks.js +7 -0
- package/package.json +4 -6
- package/server/models/constructor-items/blocks.d.ts +2 -12
- package/server/models/constructor-items/blocks.js +0 -2
- package/server/models/constructor-items/common.d.ts +2 -1
- package/server/models/constructor-items/sub-blocks.d.ts +1 -1
- package/server/models/constructor.d.ts +4 -1
- package/server/models/customization.d.ts +9 -0
- package/server/models/customization.js +2 -0
- package/server/models/index.d.ts +1 -0
- package/server/models/index.js +1 -0
- package/server/text-transform/transformers.js +2 -4
- package/server/utils/blocks.d.ts +4 -1
- package/server/utils/blocks.js +11 -1
- package/styles/styles.css +0 -196
- package/styles/styles.scss +0 -1
- package/build/cjs/components/FullscreenMedia/FullScreenMedia.d.ts +0 -9
- package/build/cjs/icons/FullScreen.d.ts +0 -2
- package/build/esm/components/FullscreenMedia/FullScreenMedia.d.ts +0 -10
- package/build/esm/icons/FullScreen.d.ts +0 -2
- package/styles/fonts.scss +0 -223
- /package/build/cjs/components/FullscreenMedia/{FullScreenMedia.css → FullscreenMedia.css} +0 -0
- /package/build/esm/components/FullscreenMedia/{FullScreenMedia.css → FullscreenMedia.css} +0 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Block, CustomConfig, PageContent } from '../../models';
|
|
2
|
+
export type EditorBlockId = number | string;
|
|
3
|
+
interface EditorState {
|
|
4
|
+
content: PageContent;
|
|
5
|
+
activeBlockId: EditorBlockId;
|
|
6
|
+
orderedBlocksCount: number;
|
|
7
|
+
custom?: CustomConfig;
|
|
8
|
+
}
|
|
9
|
+
interface OrderBlockParams {
|
|
10
|
+
oldIndex: number;
|
|
11
|
+
newIndex: number;
|
|
12
|
+
}
|
|
13
|
+
export declare const SELECT_BLOCK = "SELECT_BLOCK";
|
|
14
|
+
export declare const DELETE_BLOCK = "DELETE_BLOCK";
|
|
15
|
+
export declare const COPY_BLOCK = "COPY_BLOCK";
|
|
16
|
+
export declare const ADD_BLOCK = "ADD_BLOCK";
|
|
17
|
+
export declare const SET_REGION = "SET_REGION";
|
|
18
|
+
export declare const ORDER_BLOCK = "ORDER_BLOCK";
|
|
19
|
+
interface SelectBlock {
|
|
20
|
+
type: typeof SELECT_BLOCK;
|
|
21
|
+
payload: EditorBlockId;
|
|
22
|
+
}
|
|
23
|
+
interface DeleteBlock {
|
|
24
|
+
type: typeof DELETE_BLOCK;
|
|
25
|
+
payload: EditorBlockId;
|
|
26
|
+
}
|
|
27
|
+
interface CopyBlock {
|
|
28
|
+
type: typeof COPY_BLOCK;
|
|
29
|
+
payload: number;
|
|
30
|
+
}
|
|
31
|
+
interface AddBlock {
|
|
32
|
+
type: typeof ADD_BLOCK;
|
|
33
|
+
payload: Block;
|
|
34
|
+
}
|
|
35
|
+
interface OrderBlock {
|
|
36
|
+
type: typeof ORDER_BLOCK;
|
|
37
|
+
payload: OrderBlockParams;
|
|
38
|
+
}
|
|
39
|
+
export type EditorAction = SelectBlock | DeleteBlock | CopyBlock | AddBlock | OrderBlock;
|
|
40
|
+
export declare const getReducer: (headerBlockTypes: string[]) => (state: EditorState, action: EditorAction) => EditorState;
|
|
41
|
+
export {};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getReducer = exports.ORDER_BLOCK = exports.SET_REGION = exports.ADD_BLOCK = exports.COPY_BLOCK = exports.DELETE_BLOCK = exports.SELECT_BLOCK = void 0;
|
|
4
|
+
const utils_1 = require("../../utils");
|
|
5
|
+
const utils_2 = require("./utils");
|
|
6
|
+
// actions
|
|
7
|
+
exports.SELECT_BLOCK = 'SELECT_BLOCK';
|
|
8
|
+
exports.DELETE_BLOCK = 'DELETE_BLOCK';
|
|
9
|
+
exports.COPY_BLOCK = 'COPY_BLOCK';
|
|
10
|
+
exports.ADD_BLOCK = 'ADD_BLOCK';
|
|
11
|
+
exports.SET_REGION = 'SET_REGION';
|
|
12
|
+
exports.ORDER_BLOCK = 'ORDER_BLOCK';
|
|
13
|
+
// reducer
|
|
14
|
+
const getReducer = (headerBlockTypes) => (state, action) => {
|
|
15
|
+
const { content } = state;
|
|
16
|
+
const header = (0, utils_1.getHeaderBlock)(content.blocks, headerBlockTypes);
|
|
17
|
+
const orderedBlocks = (0, utils_1.getOrderedBlocks)(content.blocks, headerBlockTypes);
|
|
18
|
+
const withHeader = (blocks) => [header, ...blocks].filter(Boolean);
|
|
19
|
+
const getNewState = (blocks, activeBlockId) => (Object.assign(Object.assign({}, state), { content: Object.assign(Object.assign({}, content), { blocks }), activeBlockId, orderedBlocksCount: orderedBlocks.length }));
|
|
20
|
+
switch (action.type) {
|
|
21
|
+
case exports.SELECT_BLOCK:
|
|
22
|
+
return getNewState(content.blocks, action.payload);
|
|
23
|
+
case exports.DELETE_BLOCK: {
|
|
24
|
+
const blockId = action.payload;
|
|
25
|
+
return getNewState(typeof blockId === 'string'
|
|
26
|
+
? content.blocks.filter(({ type }) => type !== blockId)
|
|
27
|
+
: withHeader(orderedBlocks.filter((_block, index) => index !== blockId)), -1);
|
|
28
|
+
}
|
|
29
|
+
case exports.COPY_BLOCK: {
|
|
30
|
+
const index = action.payload;
|
|
31
|
+
return getNewState(withHeader((0, utils_2.duplicateBlock)(orderedBlocks, index)), index + 1);
|
|
32
|
+
}
|
|
33
|
+
case exports.ADD_BLOCK: {
|
|
34
|
+
let blocks;
|
|
35
|
+
let activeBlockId;
|
|
36
|
+
const block = action.payload;
|
|
37
|
+
if (headerBlockTypes.includes(block.type)) {
|
|
38
|
+
blocks = header ? blocks : [block, ...orderedBlocks];
|
|
39
|
+
activeBlockId = block.type;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
const newBlockIndex = (0, utils_2.getNewBlockIndex)(state.activeBlockId, orderedBlocks.length);
|
|
43
|
+
blocks = withHeader((0, utils_2.addBlock)(orderedBlocks, block, newBlockIndex));
|
|
44
|
+
activeBlockId = newBlockIndex;
|
|
45
|
+
}
|
|
46
|
+
if (blocks) {
|
|
47
|
+
return getNewState(blocks, activeBlockId);
|
|
48
|
+
}
|
|
49
|
+
return state;
|
|
50
|
+
}
|
|
51
|
+
case exports.ORDER_BLOCK: {
|
|
52
|
+
const { oldIndex, newIndex } = action.payload;
|
|
53
|
+
return getNewState(withHeader((0, utils_2.changeBlocksOrder)(orderedBlocks, oldIndex, newIndex)), newIndex);
|
|
54
|
+
}
|
|
55
|
+
default:
|
|
56
|
+
return state;
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
exports.getReducer = getReducer;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Block, PageContent } from '../../models';
|
|
2
|
+
import { EditorBlockId } from './reducer';
|
|
3
|
+
export declare const changeBlocksOrder: (array: Block[], oldIndex: number, newIndex: number) => Block[];
|
|
4
|
+
export declare const duplicateBlock: (array: Block[], index: number) => Block[];
|
|
5
|
+
export declare const getNewBlockIndex: (id: EditorBlockId, orderedBlocksCount: number) => number;
|
|
6
|
+
export declare const addBlock: (array: Block[], block: Block, index: number) => Block[];
|
|
7
|
+
export declare const addEditorProps: (content: PageContent) => {
|
|
8
|
+
animated: boolean;
|
|
9
|
+
blocks: Block[];
|
|
10
|
+
menu?: import("../../models").Menu | undefined;
|
|
11
|
+
background?: import("../../models").ThemedMediaProps | undefined;
|
|
12
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addEditorProps = exports.addBlock = exports.getNewBlockIndex = exports.duplicateBlock = exports.changeBlocksOrder = void 0;
|
|
4
|
+
const changeBlocksOrder = (array, oldIndex, newIndex) => {
|
|
5
|
+
const result = [...array];
|
|
6
|
+
const element = result.splice(oldIndex, 1)[0];
|
|
7
|
+
result.splice(newIndex, 0, element);
|
|
8
|
+
return result;
|
|
9
|
+
};
|
|
10
|
+
exports.changeBlocksOrder = changeBlocksOrder;
|
|
11
|
+
const duplicateBlock = (array, index) => {
|
|
12
|
+
const result = [...array];
|
|
13
|
+
result.splice(index + 1, 0, result[index]);
|
|
14
|
+
return result;
|
|
15
|
+
};
|
|
16
|
+
exports.duplicateBlock = duplicateBlock;
|
|
17
|
+
const getNewBlockIndex = (id, orderedBlocksCount) => {
|
|
18
|
+
if (id === -1) {
|
|
19
|
+
return orderedBlocksCount;
|
|
20
|
+
}
|
|
21
|
+
// id === 'string' - header block
|
|
22
|
+
return typeof id === 'string' ? 0 : id + 1;
|
|
23
|
+
};
|
|
24
|
+
exports.getNewBlockIndex = getNewBlockIndex;
|
|
25
|
+
const addBlock = (array, block, index) => {
|
|
26
|
+
const result = [...array];
|
|
27
|
+
result.splice(index, 0, block);
|
|
28
|
+
return result;
|
|
29
|
+
};
|
|
30
|
+
exports.addBlock = addBlock;
|
|
31
|
+
const addEditorProps = (content) => {
|
|
32
|
+
return Object.assign(Object.assign({}, content), { animated: false });
|
|
33
|
+
};
|
|
34
|
+
exports.addEditorProps = addEditorProps;
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { PageConstructorProps } from '../../containers/PageConstructor';
|
|
3
|
+
import { BlockDecoratorProps, PageData } from '../../models';
|
|
4
|
+
export type EditorBlockId = number | string;
|
|
5
|
+
export interface EditorProps extends Required<Pick<PageConstructorProps, 'content'>>, Partial<Omit<PageConstructorProps, 'content'>> {
|
|
6
|
+
children: (props: Partial<PageConstructorProps>) => React.ReactNode;
|
|
7
|
+
onChange?: (data: PageData) => void;
|
|
8
|
+
}
|
|
9
|
+
export interface EditBlockEditorProps {
|
|
10
|
+
activeBlockId: EditorBlockId;
|
|
11
|
+
orderedBlocksCount: number;
|
|
12
|
+
onSelect: (index: EditorBlockId) => void;
|
|
13
|
+
onDelete: (index: EditorBlockId) => void;
|
|
14
|
+
onCopy: (index: number) => void;
|
|
15
|
+
onOrderChange: (index: number, newIndex: number) => void;
|
|
16
|
+
}
|
|
17
|
+
export type EditBlockProps = EditBlockEditorProps & BlockDecoratorProps;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BlockDecorator, CustomConfig } from '../../models';
|
|
2
|
+
export declare const formatBlockName: (name: string) => string;
|
|
3
|
+
export declare const addCustomDecorator: (decorator: BlockDecorator, custom?: CustomConfig) => {
|
|
4
|
+
decorators: {
|
|
5
|
+
block: ((props: import("../../models").BlockDecoratorProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>)[];
|
|
6
|
+
};
|
|
7
|
+
blocks?: import("../../models").CustomItems | undefined;
|
|
8
|
+
subBlocks?: import("../../models").CustomItems | undefined;
|
|
9
|
+
headers?: import("../../models").CustomItems | undefined;
|
|
10
|
+
loadable?: import("../../models").LoadableConfig | undefined;
|
|
11
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addCustomDecorator = exports.formatBlockName = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const lodash_1 = tslib_1.__importDefault(require("lodash"));
|
|
6
|
+
const formatBlockName = (name) => lodash_1.default.capitalize(name).replace(/(block|-)/g, ' ');
|
|
7
|
+
exports.formatBlockName = formatBlockName;
|
|
8
|
+
const addCustomDecorator = (decorator, custom = {}) => {
|
|
9
|
+
const decorators = custom.decorators || {};
|
|
10
|
+
return Object.assign(Object.assign({}, custom), { decorators: Object.assign(Object.assign({}, decorators), { block: [...(decorators.block || []), decorator] }) });
|
|
11
|
+
};
|
|
12
|
+
exports.addCustomDecorator = addCustomDecorator;
|
|
@@ -7,4 +7,4 @@ export interface GridColumnProps extends GridColumnClassParams, Refable<HTMLDivE
|
|
|
7
7
|
dataQa?: string;
|
|
8
8
|
children?: React.ReactNode;
|
|
9
9
|
}
|
|
10
|
-
export declare const Col: React.ForwardRefExoticComponent<Pick<WithChildren<GridColumnProps>, "style" | "children" | "className" | "reset" | "
|
|
10
|
+
export declare const Col: React.ForwardRefExoticComponent<Pick<WithChildren<GridColumnProps>, "style" | "children" | "className" | "reset" | "visible" | "sizes" | "offsets" | "orders" | "hidden" | "alignSelf" | "justifyContent" | "dataQa"> & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.useMetrika = void 0;
|
|
4
4
|
const react_1 = require("react");
|
|
5
5
|
const metrikaContext_1 = require("../context/metrikaContext");
|
|
6
|
-
const models_1 = require("../models");
|
|
7
6
|
const guards_1 = require("../models/guards");
|
|
8
7
|
// eslint-disable-next-line valid-jsdoc
|
|
9
8
|
/**
|
|
@@ -29,12 +28,6 @@ const useMetrika = () => {
|
|
|
29
28
|
else {
|
|
30
29
|
metrika.reachGoals(metrikaGoals);
|
|
31
30
|
}
|
|
32
|
-
if (!pixelEvents && pixel) {
|
|
33
|
-
pixel.trackStandard(models_1.PixelEventType.SubmitApplication, {
|
|
34
|
-
content_category: 'custom',
|
|
35
|
-
content_ids: Array.isArray(metrikaGoals) ? metrikaGoals : [metrikaGoals],
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
31
|
}
|
|
39
32
|
if (pixel && pixelEvents) {
|
|
40
33
|
if (isButtonPixel(pixelEvents)) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.Fullscreen = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
6
|
const svg_1 = require("../utils/svg");
|
|
7
|
-
const
|
|
7
|
+
const Fullscreen = (props) => (react_1.default.createElement("svg", Object.assign({ xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "currentColor" }, svg_1.a11yHiddenSvgProps, props),
|
|
8
8
|
react_1.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M18 4.654v.291a10 10 0 0 0-1.763 1.404l-2.944 2.944a1 1 0 0 0 1.414 1.414l2.933-2.932A9.996 9.996 0 0 0 19.05 6h.296l-.09.39A9.993 9.993 0 0 0 19 8.64v.857a1 1 0 0 0 2 0V4.503a1.5 1.5 0 0 0-1.5-1.5L14.5 3a1 1 0 1 0 0 2h.861a10 10 0 0 0 2.249-.256l.39-.09zM4.95 18a10 10 0 0 1 1.41-1.775l2.933-2.932a1 1 0 0 1 1.414 1.414l-2.944 2.944A9.998 9.998 0 0 1 6 19.055v.291l.39-.09A9.993 9.993 0 0 1 8.64 19h.86a1 1 0 0 1 0 2l-5-.003a1.5 1.5 0 0 1-1.5-1.5V14.5a1 1 0 1 1 2 0v.861a10 10 0 0 1-.256 2.249l-.09.39h.296z" })));
|
|
9
|
-
exports.
|
|
9
|
+
exports.Fullscreen = Fullscreen;
|
package/build/cjs/icons/index.js
CHANGED
|
@@ -4,7 +4,7 @@ const tslib_1 = require("tslib");
|
|
|
4
4
|
tslib_1.__exportStar(require("./ArrowConstructor"), exports);
|
|
5
5
|
tslib_1.__exportStar(require("./ArrowSidebar"), exports);
|
|
6
6
|
tslib_1.__exportStar(require("./Chevron"), exports);
|
|
7
|
-
tslib_1.__exportStar(require("./
|
|
7
|
+
tslib_1.__exportStar(require("./Fullscreen"), exports);
|
|
8
8
|
tslib_1.__exportStar(require("./Github"), exports);
|
|
9
9
|
tslib_1.__exportStar(require("./NavigationChevron"), exports);
|
|
10
10
|
tslib_1.__exportStar(require("./PlayVideo"), exports);
|
|
@@ -8,8 +8,6 @@ export declare enum BlockType {
|
|
|
8
8
|
PromoFeaturesBlock = "promo-features-block",
|
|
9
9
|
ExtendedFeaturesBlock = "extended-features-block",
|
|
10
10
|
SliderBlock = "slider-block",
|
|
11
|
-
CalculatorBlock = "calculator-block",
|
|
12
|
-
ServiceDemoBlock = "service-demo-block",
|
|
13
11
|
QuestionsBlock = "questions-block",
|
|
14
12
|
BannerBlock = "banner-block",
|
|
15
13
|
CompaniesBlock = "companies-block",
|
|
@@ -48,7 +46,6 @@ export interface LoadableProps {
|
|
|
48
46
|
export interface LoadableChildren {
|
|
49
47
|
loadable?: LoadableProps;
|
|
50
48
|
}
|
|
51
|
-
export type ServiceDemoProps = Animatable;
|
|
52
49
|
export declare enum SliderBreakpointNames {
|
|
53
50
|
Sm = "sm",
|
|
54
51
|
Md = "md",
|
|
@@ -110,7 +107,6 @@ export interface HeaderBlockProps {
|
|
|
110
107
|
breadcrumbs?: HeaderBreadCrumbsProps;
|
|
111
108
|
status?: JSX.Element;
|
|
112
109
|
}
|
|
113
|
-
export type CalculatorProps = Animatable;
|
|
114
110
|
export interface ExtendedFeaturesItem extends Omit<ContentBlockProps, 'theme' | 'centered' | 'colSizes' | 'size' | 'title'> {
|
|
115
111
|
title: string;
|
|
116
112
|
label?: string;
|
|
@@ -216,7 +212,7 @@ export interface TabsBlockProps extends Animatable {
|
|
|
216
212
|
items: TabsBlockItem[];
|
|
217
213
|
}
|
|
218
214
|
export interface CardLayoutBlockProps extends Childable, Animatable, LoadableChildren {
|
|
219
|
-
title
|
|
215
|
+
title?: TitleItemProps | string;
|
|
220
216
|
description?: string;
|
|
221
217
|
colSizes?: GridColumnSizesType;
|
|
222
218
|
}
|
|
@@ -283,15 +279,9 @@ export interface ShareBlockProps {
|
|
|
283
279
|
export type HeaderBlockModel = {
|
|
284
280
|
type: BlockType.HeaderBlock;
|
|
285
281
|
} & HeaderBlockProps;
|
|
286
|
-
export type CalculatorBlockModel = {
|
|
287
|
-
type: BlockType.CalculatorBlock;
|
|
288
|
-
} & CalculatorProps;
|
|
289
282
|
export type SliderBlockModel = {
|
|
290
283
|
type: BlockType.SliderBlock;
|
|
291
284
|
} & SliderProps;
|
|
292
|
-
export type ServiceDemoBlockModel = {
|
|
293
|
-
type: BlockType.ServiceDemoBlock;
|
|
294
|
-
} & ServiceDemoProps;
|
|
295
285
|
export type ExtendedFeaturesBlockModel = {
|
|
296
286
|
type: BlockType.ExtendedFeaturesBlock;
|
|
297
287
|
} & ExtendedFeaturesProps;
|
|
@@ -340,6 +330,6 @@ export type ContentLayoutBlockModel = {
|
|
|
340
330
|
export type ShareBLockModel = {
|
|
341
331
|
type: BlockType.ShareBlock;
|
|
342
332
|
} & ShareBlockProps;
|
|
343
|
-
type BlockModels = SliderBlockModel |
|
|
333
|
+
type BlockModels = SliderBlockModel | ExtendedFeaturesBlockModel | PromoFeaturesBlockModel | QuestionsBlockModel | BannerBlockModel | CompaniesBlockModel | MediaBlockModel | MapBlockModel | InfoBlockModel | TableBlockModel | TabsBlockModel | HeaderBlockModel | IconsBlockModel | HeaderSliderBlockModel | CardLayoutBlockModel | ContentLayoutBlockModel | ShareBLockModel | FilterBlockModel;
|
|
344
334
|
export type Block = BlockModels & BlockBaseProps;
|
|
345
335
|
export {};
|
|
@@ -6,8 +6,6 @@ var BlockType;
|
|
|
6
6
|
BlockType["PromoFeaturesBlock"] = "promo-features-block";
|
|
7
7
|
BlockType["ExtendedFeaturesBlock"] = "extended-features-block";
|
|
8
8
|
BlockType["SliderBlock"] = "slider-block";
|
|
9
|
-
BlockType["CalculatorBlock"] = "calculator-block";
|
|
10
|
-
BlockType["ServiceDemoBlock"] = "service-demo-block";
|
|
11
9
|
BlockType["QuestionsBlock"] = "questions-block";
|
|
12
10
|
BlockType["BannerBlock"] = "banner-block";
|
|
13
11
|
BlockType["CompaniesBlock"] = "companies-block";
|
|
@@ -94,6 +94,7 @@ export interface BackgroundImageProps extends React.HTMLProps<HTMLDivElement>, P
|
|
|
94
94
|
style?: CSSProperties;
|
|
95
95
|
imageClassName?: string;
|
|
96
96
|
hide?: boolean;
|
|
97
|
+
qa?: string;
|
|
97
98
|
}
|
|
98
99
|
export interface MediaVideoProps extends AnalyticsEventsBase {
|
|
99
100
|
src: string[];
|
|
@@ -168,7 +169,7 @@ export interface MediaComponentVideoProps extends AnalyticsEventsBase {
|
|
|
168
169
|
export interface MediaComponentYoutubeProps {
|
|
169
170
|
youtube: string;
|
|
170
171
|
previewImg?: string;
|
|
171
|
-
|
|
172
|
+
fullscreen?: boolean;
|
|
172
173
|
}
|
|
173
174
|
export interface MediaComponentImageProps {
|
|
174
175
|
image: ImageProps | ImageProps[] | ImageDeviceProps;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { PropsWithChildren } from 'react';
|
|
2
|
-
import { Animatable, Block, ConstructorItem, ThemedMediaProps, WithChildren } from './';
|
|
2
|
+
import { Animatable, Block, BlockDecoratorProps, ConstructorItem, ThemedMediaProps, WithChildren } from './';
|
|
3
3
|
export interface PageData {
|
|
4
4
|
content: PageContent;
|
|
5
5
|
}
|
|
@@ -40,5 +40,8 @@ export interface CustomConfig {
|
|
|
40
40
|
subBlocks?: CustomItems;
|
|
41
41
|
headers?: CustomItems;
|
|
42
42
|
loadable?: LoadableConfig;
|
|
43
|
+
decorators?: {
|
|
44
|
+
block?: ((props: BlockDecoratorProps) => React.ReactElement)[];
|
|
45
|
+
};
|
|
43
46
|
}
|
|
44
47
|
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { PropsWithChildren } from 'react';
|
|
2
|
+
export interface BlockDecorationProps extends PropsWithChildren {
|
|
3
|
+
id?: string;
|
|
4
|
+
}
|
|
5
|
+
export interface BlockDecoratorProps extends PropsWithChildren {
|
|
6
|
+
id: string | number;
|
|
7
|
+
isHeader?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export type BlockDecorator = (props: BlockDecoratorProps) => React.ReactElement;
|
|
@@ -8,3 +8,4 @@ tslib_1.__exportStar(require("./components"), exports);
|
|
|
8
8
|
tslib_1.__exportStar(require("./guards"), exports);
|
|
9
9
|
tslib_1.__exportStar(require("./react"), exports);
|
|
10
10
|
tslib_1.__exportStar(require("./navigation"), exports);
|
|
11
|
+
tslib_1.__exportStar(require("./customization"), exports);
|
|
@@ -36,9 +36,9 @@ function getButtonSize(size) {
|
|
|
36
36
|
}
|
|
37
37
|
const Content = (props) => {
|
|
38
38
|
const { title, text, additionalInfo, size = 'l', links, buttons, colSizes = { all: 12, sm: 8 }, centered, theme, className, } = props;
|
|
39
|
-
const titleProps =
|
|
39
|
+
const titleProps = !title || typeof title === 'string'
|
|
40
40
|
? { text: title, textSize: getTextSize(size) }
|
|
41
|
-
:
|
|
41
|
+
: title;
|
|
42
42
|
const hasTitle = Boolean(title);
|
|
43
43
|
return (react_1.default.createElement(grid_1.Col, { className: b({ size, centered, theme }, className), reset: true, sizes: colSizes },
|
|
44
44
|
title && react_1.default.createElement(components_1.Title, { className: b('title'), title: titleProps, colSizes: { all: 12 } }),
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { LayoutItemProps } from '../../models';
|
|
2
|
-
declare const LayoutItem: ({ content: { links, ...content }, metaInfo, media, border,
|
|
2
|
+
declare const LayoutItem: ({ content: { links, ...content }, metaInfo, media, border, fullscreen, className, }: LayoutItemProps) => JSX.Element;
|
|
3
3
|
export default LayoutItem;
|
|
@@ -8,11 +8,11 @@ const utils_1 = require("../../utils");
|
|
|
8
8
|
const utils_2 = require("./utils");
|
|
9
9
|
const b = (0, utils_1.block)('layout-item');
|
|
10
10
|
const LayoutItem = (_a) => {
|
|
11
|
-
var _b = _a.content, { links } = _b, content = tslib_1.__rest(_b, ["links"]), { metaInfo, media, border,
|
|
11
|
+
var _b = _a.content, { links } = _b, content = tslib_1.__rest(_b, ["links"]), { metaInfo, media, border, fullscreen, className } = _a;
|
|
12
12
|
return (react_1.default.createElement("div", { className: b(null, className) },
|
|
13
|
-
|
|
14
|
-
var { className: mediaClassName } = _a,
|
|
15
|
-
return (react_1.default.createElement(components_1.Media, Object.assign({}, media,
|
|
13
|
+
fullscreen && (0, utils_2.hasFullscreen)(media) ? (react_1.default.createElement(components_1.FullscreenMedia, { showFullscreenIcon: (0, utils_2.showFullscreenIcon)(media) }, (_a = {}) => {
|
|
14
|
+
var { className: mediaClassName, fullscreen: _fullscreen } = _a, fullscreenMediaProps = tslib_1.__rest(_a, ["className", "fullscreen"]);
|
|
15
|
+
return (react_1.default.createElement(components_1.Media, Object.assign({}, media, fullscreenMediaProps, { className: b('media', { border }, mediaClassName) })));
|
|
16
16
|
})) : (react_1.default.createElement(components_1.Media, Object.assign({}, media, { className: b('media', { border }) }))),
|
|
17
17
|
metaInfo && react_1.default.createElement(components_1.MetaInfo, { items: metaInfo, className: b('meta-info') }),
|
|
18
18
|
react_1.default.createElement("div", { className: b('content') },
|
|
@@ -132,6 +132,9 @@ export declare const LayoutItem: {
|
|
|
132
132
|
type: string;
|
|
133
133
|
})[];
|
|
134
134
|
};
|
|
135
|
+
fullscreen: {
|
|
136
|
+
type: string;
|
|
137
|
+
};
|
|
135
138
|
};
|
|
136
139
|
content: Partial<{
|
|
137
140
|
title: {
|
|
@@ -209,7 +212,7 @@ export declare const LayoutItem: {
|
|
|
209
212
|
border: {
|
|
210
213
|
type: string;
|
|
211
214
|
};
|
|
212
|
-
|
|
215
|
+
fullscreen: {
|
|
213
216
|
type: string;
|
|
214
217
|
};
|
|
215
218
|
type: {};
|
|
@@ -12,7 +12,7 @@ exports.LayoutItem = {
|
|
|
12
12
|
required: ['content', 'media'],
|
|
13
13
|
properties: Object.assign(Object.assign({}, common_1.BaseProps), { media: common_1.MediaProps, content: (0, lodash_1.omit)(schema_2.ContentBase, ['colSize', 'size', 'centered']), metaInfo: schema_1.default, border: {
|
|
14
14
|
type: 'boolean',
|
|
15
|
-
},
|
|
15
|
+
}, fullscreen: {
|
|
16
16
|
type: 'boolean',
|
|
17
17
|
} }),
|
|
18
18
|
};
|
|
@@ -24,5 +24,5 @@ export declare const getLayoutItemLinks: (links: LayoutItemProps['content']['lin
|
|
|
24
24
|
}[] | undefined;
|
|
25
25
|
className?: string | undefined;
|
|
26
26
|
}[] | undefined;
|
|
27
|
-
export declare const
|
|
28
|
-
export declare const
|
|
27
|
+
export declare const hasFullscreen: ({ dataLens, image }: MediaProps) => boolean;
|
|
28
|
+
export declare const showFullscreenIcon: ({ youtube }: MediaProps) => boolean;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.showFullscreenIcon = exports.hasFullscreen = exports.getLayoutItemLinks = void 0;
|
|
4
4
|
const getLayoutItemLinks = (links) => links === null || links === void 0 ? void 0 : links.map((link) => (Object.assign({ theme: 'normal' }, link)));
|
|
5
5
|
exports.getLayoutItemLinks = getLayoutItemLinks;
|
|
6
|
-
const
|
|
7
|
-
// datalens and slider media card don't support
|
|
6
|
+
const hasFullscreen = ({ dataLens, image }) => {
|
|
7
|
+
// datalens and slider media card don't support fullscreen mode
|
|
8
8
|
return !(dataLens || Array.isArray(image));
|
|
9
9
|
};
|
|
10
|
-
exports.
|
|
11
|
-
const
|
|
12
|
-
exports.
|
|
10
|
+
exports.hasFullscreen = hasFullscreen;
|
|
11
|
+
const showFullscreenIcon = ({ youtube }) => !youtube;
|
|
12
|
+
exports.showFullscreenIcon = showFullscreenIcon;
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.contentTransformer = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
+
/* eslint-disable no-param-reassign */
|
|
6
|
+
/* eslint-disable no-not-accumulator-reassign/no-not-accumulator-reassign */
|
|
5
7
|
const lodash_1 = tslib_1.__importDefault(require("lodash"));
|
|
6
8
|
const config_1 = require("./config");
|
|
7
9
|
function transformBlocks(blocks, lang, customConfig = {}) {
|
|
@@ -13,7 +15,6 @@ function transformBlock(lang, blocksConfig, block) {
|
|
|
13
15
|
const blockConfig = blocksConfig[block.type];
|
|
14
16
|
if (block) {
|
|
15
17
|
if ('randomOrder' in block && block.randomOrder && 'children' in block && block.children) {
|
|
16
|
-
// eslint-disable-next-line no-not-accumulator-reassign/no-not-accumulator-reassign, no-param-reassign
|
|
17
18
|
block.children = lodash_1.default.shuffle(block.children);
|
|
18
19
|
}
|
|
19
20
|
}
|
|
@@ -26,11 +27,9 @@ function transformBlock(lang, blocksConfig, block) {
|
|
|
26
27
|
fields.forEach((field) => {
|
|
27
28
|
if (block[field]) {
|
|
28
29
|
if (parser) {
|
|
29
|
-
// eslint-disable-next-line no-not-accumulator-reassign/no-not-accumulator-reassign, no-param-reassign
|
|
30
30
|
block[field] = parser(transformer, block[field]);
|
|
31
31
|
}
|
|
32
32
|
else if (typeof block[field] === 'string') {
|
|
33
|
-
// eslint-disable-next-line no-not-accumulator-reassign/no-not-accumulator-reassign, no-param-reassign
|
|
34
33
|
block[field] = transformer(block[field]);
|
|
35
34
|
}
|
|
36
35
|
}
|
|
@@ -42,7 +41,6 @@ function transformBlock(lang, blocksConfig, block) {
|
|
|
42
41
|
});
|
|
43
42
|
}
|
|
44
43
|
if ('children' in block && block.children) {
|
|
45
|
-
// eslint-disable-next-line no-not-accumulator-reassign/no-not-accumulator-reassign, no-param-reassign
|
|
46
44
|
block.children = transformBlocks(block.children, lang, blocksConfig);
|
|
47
45
|
}
|
|
48
46
|
return block;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CustomConfig, PCShareSocialNetwork, TextSize } from '../models';
|
|
1
|
+
import { Block, CustomConfig, PCShareSocialNetwork, TextSize } from '../models';
|
|
2
2
|
import { ConstructorBlock } from '../models/constructor';
|
|
3
3
|
export declare function getHeaderTag(size: TextSize): "h1" | "h2" | "h4" | "h5";
|
|
4
4
|
export declare function getBlockKey(block: ConstructorBlock, index: number): string;
|
|
@@ -8,4 +8,7 @@ export declare const getCustomItems: ({ blocks, headers, subBlocks }?: CustomCon
|
|
|
8
8
|
};
|
|
9
9
|
export declare const getCustomSubBlockTypes: (customBlocks?: CustomConfig) => string[];
|
|
10
10
|
export declare const getCustomHeaderTypes: (customBlocks?: CustomConfig) => string[];
|
|
11
|
+
export declare const getOrderedBlocks: (blocks: Block[], headerBlockTypes?: string[]) => Block[];
|
|
12
|
+
export declare const getHeaderBlock: (blocks: Block[], headerBlockTypes?: string[]) => Block | undefined;
|
|
11
13
|
export declare const getShareLink: (url: string, type: PCShareSocialNetwork, title?: string, text?: string) => string | undefined;
|
|
14
|
+
export declare const getBlockIndexFromId: (blockId?: string) => number;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getShareLink = exports.getCustomHeaderTypes = exports.getCustomSubBlockTypes = exports.getCustomItems = exports.getCustomBlockTypes = exports.getBlockKey = exports.getHeaderTag = void 0;
|
|
3
|
+
exports.getBlockIndexFromId = exports.getShareLink = exports.getHeaderBlock = exports.getOrderedBlocks = exports.getCustomHeaderTypes = exports.getCustomSubBlockTypes = exports.getCustomItems = exports.getCustomBlockTypes = exports.getBlockKey = exports.getHeaderTag = void 0;
|
|
4
4
|
const models_1 = require("../models");
|
|
5
5
|
function getHeaderTag(size) {
|
|
6
6
|
switch (size) {
|
|
@@ -46,6 +46,14 @@ const getShareUrlWithParams = (url, params = {}) => {
|
|
|
46
46
|
});
|
|
47
47
|
return result.toString();
|
|
48
48
|
};
|
|
49
|
+
const getOrderedBlocks = (blocks, headerBlockTypes = []) => {
|
|
50
|
+
return blocks.filter(({ type }) => !headerBlockTypes.includes(type));
|
|
51
|
+
};
|
|
52
|
+
exports.getOrderedBlocks = getOrderedBlocks;
|
|
53
|
+
const getHeaderBlock = (blocks, headerBlockTypes = []) => {
|
|
54
|
+
return blocks.find(({ type }) => headerBlockTypes.includes(type));
|
|
55
|
+
};
|
|
56
|
+
exports.getHeaderBlock = getHeaderBlock;
|
|
49
57
|
const getShareLink = (url, type, title, text) => {
|
|
50
58
|
// https://github.com/bradvin/social-share-urls
|
|
51
59
|
switch (type) {
|
|
@@ -75,3 +83,5 @@ const getShareLink = (url, type, title, text) => {
|
|
|
75
83
|
}
|
|
76
84
|
};
|
|
77
85
|
exports.getShareLink = getShareLink;
|
|
86
|
+
const getBlockIndexFromId = (blockId) => { var _a; return Number((_a = blockId === null || blockId === void 0 ? void 0 : blockId.split('-')) === null || _a === void 0 ? void 0 : _a.slice(-1).pop()); };
|
|
87
|
+
exports.getBlockIndexFromId = getBlockIndexFromId;
|