@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.
Files changed (217) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/README.md +1 -1
  3. package/build/cjs/blocks/CardLayout/CardLayout.js +1 -1
  4. package/build/cjs/blocks/CardLayout/schema.d.ts +2 -2
  5. package/build/cjs/blocks/CardLayout/schema.js +1 -1
  6. package/build/cjs/blocks/FilterBlock/FilterBlock.js +9 -13
  7. package/build/cjs/blocks/Header/schema.d.ts +9 -0
  8. package/build/cjs/blocks/HeaderSlider/schema.d.ts +3 -0
  9. package/build/cjs/blocks/Media/schema.d.ts +6 -0
  10. package/build/cjs/blocks/PromoFeaturesBlock/schema.d.ts +3 -0
  11. package/build/cjs/blocks/Tabs/schema.d.ts +3 -0
  12. package/build/cjs/components/BackgroundImage/BackgroundImage.js +2 -2
  13. package/build/cjs/components/BlockBase/BlockBase.d.ts +3 -2
  14. package/build/cjs/components/BlockBase/BlockBase.js +4 -2
  15. package/build/cjs/components/FullscreenImage/{FullScreenImage.css → FullscreenImage.css} +13 -13
  16. package/build/cjs/components/FullscreenImage/FullscreenImage.d.ts +3 -3
  17. package/build/cjs/components/FullscreenImage/FullscreenImage.js +7 -7
  18. package/build/cjs/components/FullscreenImage/i18n/index.js +1 -1
  19. package/build/cjs/components/FullscreenMedia/FullscreenMedia.d.ts +9 -0
  20. package/build/cjs/components/FullscreenMedia/{FullScreenMedia.js → FullscreenMedia.js} +5 -5
  21. package/build/cjs/components/Image/Image.d.ts +1 -0
  22. package/build/cjs/components/Image/Image.js +2 -2
  23. package/build/cjs/components/Media/FullscreenVideo/FullscreenVideo.d.ts +4 -0
  24. package/build/cjs/components/Media/FullscreenVideo/FullscreenVideo.js +10 -0
  25. package/build/cjs/components/Media/Image/Image.d.ts +1 -0
  26. package/build/cjs/components/Media/Image/Image.js +10 -3
  27. package/build/cjs/components/Media/Media.js +25 -5
  28. package/build/cjs/components/Media/Video/Video.d.ts +1 -1
  29. package/build/cjs/components/VideoBlock/VideoBlock.d.ts +1 -1
  30. package/build/cjs/components/VideoBlock/VideoBlock.js +3 -3
  31. package/build/cjs/components/index.d.ts +1 -1
  32. package/build/cjs/components/index.js +3 -3
  33. package/build/cjs/constructor-items.d.ts +1 -1
  34. package/build/cjs/containers/Loadable/Loadable.d.ts +2 -2
  35. package/build/cjs/containers/PageConstructor/PageConstructor.js +5 -3
  36. package/build/cjs/containers/PageConstructor/components/ConstructorBlocks/ConstructorBlocks.js +3 -2
  37. package/build/cjs/containers/PageConstructor/components/ConstructorItem/ConstructorItem.d.ts +1 -1
  38. package/build/cjs/containers/PageConstructor/components/ConstructorItem/ConstructorItem.js +5 -5
  39. package/build/cjs/context/innerContext/InnerContext.d.ts +2 -1
  40. package/build/cjs/customization/BlockDecoration.d.ts +3 -0
  41. package/build/cjs/customization/BlockDecoration.js +22 -0
  42. package/build/cjs/editor/Components/AddBlock/AddBlock.css +82 -0
  43. package/build/cjs/editor/Components/AddBlock/AddBlock.d.ts +7 -0
  44. package/build/cjs/editor/Components/AddBlock/AddBlock.js +43 -0
  45. package/build/cjs/editor/Components/EditBlock/EditBlock.css +47 -0
  46. package/build/cjs/editor/Components/EditBlock/EditBlock.d.ts +4 -0
  47. package/build/cjs/editor/Components/EditBlock/EditBlock.js +32 -0
  48. package/build/cjs/editor/Containers/Editor.d.ts +2 -0
  49. package/build/cjs/editor/Containers/Editor.js +24 -0
  50. package/build/cjs/editor/data/index.d.ts +13 -0
  51. package/build/cjs/editor/data/index.js +27 -0
  52. package/build/cjs/editor/data/previews/default-preview.d.ts +3 -0
  53. package/build/cjs/editor/data/previews/default-preview.js +18 -0
  54. package/build/cjs/editor/data/previews/header-block.d.ts +3 -0
  55. package/build/cjs/editor/data/previews/header-block.js +19 -0
  56. package/build/cjs/editor/index.d.ts +2 -0
  57. package/build/cjs/editor/index.js +7 -0
  58. package/build/cjs/editor/store/index.d.ts +15 -0
  59. package/build/cjs/editor/store/index.js +32 -0
  60. package/build/cjs/editor/store/reducer.d.ts +41 -0
  61. package/build/cjs/editor/store/reducer.js +59 -0
  62. package/build/cjs/editor/store/utils.d.ts +12 -0
  63. package/build/cjs/editor/store/utils.js +34 -0
  64. package/build/cjs/editor/styles/mixins.css +0 -0
  65. package/build/cjs/editor/styles/variables.css +0 -0
  66. package/build/cjs/editor/types/index.d.ts +17 -0
  67. package/build/cjs/editor/types/index.js +2 -0
  68. package/build/cjs/editor/utils/index.d.ts +11 -0
  69. package/build/cjs/editor/utils/index.js +12 -0
  70. package/build/cjs/grid/Col/Col.d.ts +1 -1
  71. package/build/cjs/hooks/useMetrika.js +0 -7
  72. package/build/cjs/icons/Fullscreen.d.ts +2 -0
  73. package/build/cjs/icons/{FullScreen.js → Fullscreen.js} +3 -3
  74. package/build/cjs/icons/index.d.ts +1 -1
  75. package/build/cjs/icons/index.js +1 -1
  76. package/build/cjs/models/constructor-items/blocks.d.ts +2 -12
  77. package/build/cjs/models/constructor-items/blocks.js +0 -2
  78. package/build/cjs/models/constructor-items/common.d.ts +2 -1
  79. package/build/cjs/models/constructor-items/sub-blocks.d.ts +1 -1
  80. package/build/cjs/models/constructor.d.ts +4 -1
  81. package/build/cjs/models/customization.d.ts +9 -0
  82. package/build/cjs/models/customization.js +2 -0
  83. package/build/cjs/models/index.d.ts +1 -0
  84. package/build/cjs/models/index.js +1 -0
  85. package/build/cjs/schema/index.js +0 -1
  86. package/build/cjs/schema/validators/common.d.ts +3 -0
  87. package/build/cjs/schema/validators/common.js +3 -0
  88. package/build/cjs/sub-blocks/Content/Content.js +2 -2
  89. package/build/cjs/sub-blocks/LayoutItem/LayoutItem.d.ts +1 -1
  90. package/build/cjs/sub-blocks/LayoutItem/LayoutItem.js +4 -4
  91. package/build/cjs/sub-blocks/LayoutItem/schema.d.ts +4 -1
  92. package/build/cjs/sub-blocks/LayoutItem/schema.js +1 -1
  93. package/build/cjs/sub-blocks/LayoutItem/utils.d.ts +2 -2
  94. package/build/cjs/sub-blocks/LayoutItem/utils.js +6 -6
  95. package/build/cjs/sub-blocks/MediaCard/schema.d.ts +3 -0
  96. package/build/cjs/text-transform/transformers.js +2 -4
  97. package/build/cjs/utils/blocks.d.ts +4 -1
  98. package/build/cjs/utils/blocks.js +11 -1
  99. package/build/esm/blocks/CardLayout/CardLayout.js +1 -1
  100. package/build/esm/blocks/CardLayout/schema.d.ts +2 -2
  101. package/build/esm/blocks/CardLayout/schema.js +1 -1
  102. package/build/esm/blocks/FilterBlock/FilterBlock.js +10 -14
  103. package/build/esm/blocks/Header/schema.d.ts +9 -0
  104. package/build/esm/blocks/HeaderSlider/schema.d.ts +3 -0
  105. package/build/esm/blocks/Media/schema.d.ts +6 -0
  106. package/build/esm/blocks/PromoFeaturesBlock/schema.d.ts +3 -0
  107. package/build/esm/blocks/Tabs/Tabs.js +2 -2
  108. package/build/esm/blocks/Tabs/schema.d.ts +3 -0
  109. package/build/esm/components/BackgroundImage/BackgroundImage.js +2 -2
  110. package/build/esm/components/BlockBase/BlockBase.d.ts +3 -2
  111. package/build/esm/components/BlockBase/BlockBase.js +4 -2
  112. package/build/esm/components/FullscreenImage/{FullScreenImage.css → FullscreenImage.css} +13 -13
  113. package/build/esm/components/FullscreenImage/FullscreenImage.d.ts +4 -4
  114. package/build/esm/components/FullscreenImage/FullscreenImage.js +9 -9
  115. package/build/esm/components/FullscreenImage/i18n/index.js +1 -1
  116. package/build/esm/components/FullscreenMedia/FullscreenMedia.d.ts +10 -0
  117. package/build/esm/components/FullscreenMedia/{FullScreenMedia.js → FullscreenMedia.js} +7 -7
  118. package/build/esm/components/Image/Image.d.ts +1 -0
  119. package/build/esm/components/Image/Image.js +2 -2
  120. package/build/esm/components/Media/FullscreenVideo/FullscreenVideo.d.ts +4 -0
  121. package/build/esm/components/Media/FullscreenVideo/FullscreenVideo.js +7 -0
  122. package/build/esm/components/Media/Image/Image.d.ts +1 -0
  123. package/build/esm/components/Media/Image/Image.js +12 -5
  124. package/build/esm/components/Media/Media.js +25 -5
  125. package/build/esm/components/Media/Video/Video.d.ts +1 -1
  126. package/build/esm/components/VideoBlock/VideoBlock.d.ts +1 -1
  127. package/build/esm/components/VideoBlock/VideoBlock.js +3 -3
  128. package/build/esm/components/index.d.ts +1 -1
  129. package/build/esm/components/index.js +1 -1
  130. package/build/esm/constructor-items.d.ts +1 -1
  131. package/build/esm/containers/Loadable/Loadable.d.ts +2 -2
  132. package/build/esm/containers/PageConstructor/PageConstructor.js +6 -4
  133. package/build/esm/containers/PageConstructor/components/ConstructorBlocks/ConstructorBlocks.js +3 -2
  134. package/build/esm/containers/PageConstructor/components/ConstructorItem/ConstructorItem.d.ts +1 -1
  135. package/build/esm/containers/PageConstructor/components/ConstructorItem/ConstructorItem.js +5 -5
  136. package/build/esm/context/innerContext/InnerContext.d.ts +2 -1
  137. package/build/esm/customization/BlockDecoration.d.ts +3 -0
  138. package/build/esm/customization/BlockDecoration.js +17 -0
  139. package/build/esm/editor/Components/AddBlock/AddBlock.css +82 -0
  140. package/build/esm/editor/Components/AddBlock/AddBlock.d.ts +8 -0
  141. package/build/esm/editor/Components/AddBlock/AddBlock.js +41 -0
  142. package/build/esm/editor/Components/EditBlock/EditBlock.css +47 -0
  143. package/build/esm/editor/Components/EditBlock/EditBlock.d.ts +5 -0
  144. package/build/esm/editor/Components/EditBlock/EditBlock.js +30 -0
  145. package/build/esm/editor/Containers/Editor.d.ts +2 -0
  146. package/build/esm/editor/Containers/Editor.js +20 -0
  147. package/build/esm/editor/data/index.d.ts +13 -0
  148. package/build/esm/editor/data/index.js +24 -0
  149. package/build/esm/editor/data/previews/default-preview.d.ts +3 -0
  150. package/build/esm/editor/data/previews/default-preview.js +15 -0
  151. package/build/esm/editor/data/previews/header-block.d.ts +3 -0
  152. package/build/esm/editor/data/previews/header-block.js +16 -0
  153. package/build/esm/editor/index.d.ts +2 -0
  154. package/build/esm/editor/index.js +2 -0
  155. package/build/esm/editor/store/index.d.ts +15 -0
  156. package/build/esm/editor/store/index.js +28 -0
  157. package/build/esm/editor/store/reducer.d.ts +41 -0
  158. package/build/esm/editor/store/reducer.js +55 -0
  159. package/build/esm/editor/store/utils.d.ts +12 -0
  160. package/build/esm/editor/store/utils.js +26 -0
  161. package/build/esm/editor/styles/mixins.css +0 -0
  162. package/build/esm/editor/styles/variables.css +0 -0
  163. package/build/esm/editor/types/index.d.ts +17 -0
  164. package/build/esm/editor/types/index.js +1 -0
  165. package/build/esm/editor/utils/index.d.ts +11 -0
  166. package/build/esm/editor/utils/index.js +6 -0
  167. package/build/esm/grid/Col/Col.d.ts +1 -1
  168. package/build/esm/hooks/useMetrika.js +0 -7
  169. package/build/esm/icons/Fullscreen.d.ts +2 -0
  170. package/build/esm/icons/{FullScreen.js → Fullscreen.js} +1 -1
  171. package/build/esm/icons/index.d.ts +1 -1
  172. package/build/esm/icons/index.js +1 -1
  173. package/build/esm/models/constructor-items/blocks.d.ts +2 -12
  174. package/build/esm/models/constructor-items/blocks.js +0 -2
  175. package/build/esm/models/constructor-items/common.d.ts +2 -1
  176. package/build/esm/models/constructor-items/sub-blocks.d.ts +1 -1
  177. package/build/esm/models/constructor.d.ts +4 -1
  178. package/build/esm/models/customization.d.ts +9 -0
  179. package/build/esm/models/customization.js +1 -0
  180. package/build/esm/models/index.d.ts +1 -0
  181. package/build/esm/models/index.js +1 -0
  182. package/build/esm/schema/index.js +0 -1
  183. package/build/esm/schema/validators/common.d.ts +3 -0
  184. package/build/esm/schema/validators/common.js +3 -0
  185. package/build/esm/sub-blocks/Content/Content.js +2 -3
  186. package/build/esm/sub-blocks/LayoutItem/LayoutItem.d.ts +1 -1
  187. package/build/esm/sub-blocks/LayoutItem/LayoutItem.js +6 -6
  188. package/build/esm/sub-blocks/LayoutItem/schema.d.ts +4 -1
  189. package/build/esm/sub-blocks/LayoutItem/schema.js +1 -1
  190. package/build/esm/sub-blocks/LayoutItem/utils.d.ts +2 -2
  191. package/build/esm/sub-blocks/LayoutItem/utils.js +3 -3
  192. package/build/esm/sub-blocks/MediaCard/schema.d.ts +3 -0
  193. package/build/esm/text-transform/transformers.js +2 -4
  194. package/build/esm/utils/blocks.d.ts +4 -1
  195. package/build/esm/utils/blocks.js +7 -0
  196. package/package.json +4 -6
  197. package/server/models/constructor-items/blocks.d.ts +2 -12
  198. package/server/models/constructor-items/blocks.js +0 -2
  199. package/server/models/constructor-items/common.d.ts +2 -1
  200. package/server/models/constructor-items/sub-blocks.d.ts +1 -1
  201. package/server/models/constructor.d.ts +4 -1
  202. package/server/models/customization.d.ts +9 -0
  203. package/server/models/customization.js +2 -0
  204. package/server/models/index.d.ts +1 -0
  205. package/server/models/index.js +1 -0
  206. package/server/text-transform/transformers.js +2 -4
  207. package/server/utils/blocks.d.ts +4 -1
  208. package/server/utils/blocks.js +11 -1
  209. package/styles/styles.css +0 -196
  210. package/styles/styles.scss +0 -1
  211. package/build/cjs/components/FullscreenMedia/FullScreenMedia.d.ts +0 -9
  212. package/build/cjs/icons/FullScreen.d.ts +0 -2
  213. package/build/esm/components/FullscreenMedia/FullScreenMedia.d.ts +0 -10
  214. package/build/esm/icons/FullScreen.d.ts +0 -2
  215. package/styles/fonts.scss +0 -223
  216. /package/build/cjs/components/FullscreenMedia/{FullScreenMedia.css → FullscreenMedia.css} +0 -0
  217. /package/build/esm/components/FullscreenMedia/{FullScreenMedia.css → FullscreenMedia.css} +0 -0
@@ -0,0 +1,26 @@
1
+ export const changeBlocksOrder = (array, oldIndex, newIndex) => {
2
+ const result = [...array];
3
+ const element = result.splice(oldIndex, 1)[0];
4
+ result.splice(newIndex, 0, element);
5
+ return result;
6
+ };
7
+ export const duplicateBlock = (array, index) => {
8
+ const result = [...array];
9
+ result.splice(index + 1, 0, result[index]);
10
+ return result;
11
+ };
12
+ export const getNewBlockIndex = (id, orderedBlocksCount) => {
13
+ if (id === -1) {
14
+ return orderedBlocksCount;
15
+ }
16
+ // id === 'string' - header block
17
+ return typeof id === 'string' ? 0 : id + 1;
18
+ };
19
+ export const addBlock = (array, block, index) => {
20
+ const result = [...array];
21
+ result.splice(index, 0, block);
22
+ return result;
23
+ };
24
+ export const addEditorProps = (content) => {
25
+ return Object.assign(Object.assign({}, content), { animated: false });
26
+ };
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 @@
1
+ export {};
@@ -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,6 @@
1
+ import _ from 'lodash';
2
+ export const formatBlockName = (name) => _.capitalize(name).replace(/(block|-)/g, ' ');
3
+ export const addCustomDecorator = (decorator, custom = {}) => {
4
+ const decorators = custom.decorators || {};
5
+ return Object.assign(Object.assign({}, custom), { decorators: Object.assign(Object.assign({}, decorators), { block: [...(decorators.block || []), decorator] }) });
6
+ };
@@ -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" | "sizes" | "offsets" | "orders" | "hidden" | "visible" | "alignSelf" | "justifyContent" | "dataQa"> & React.RefAttributes<HTMLDivElement>>;
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>>;
@@ -1,6 +1,5 @@
1
1
  import { useContext } from 'react';
2
2
  import { MetrikaContext } from '../context/metrikaContext';
3
- import { PixelEventType } from '../models';
4
3
  import { isNewMetrikaFormat } from '../models/guards';
5
4
  // eslint-disable-next-line valid-jsdoc
6
5
  /**
@@ -26,12 +25,6 @@ export const useMetrika = () => {
26
25
  else {
27
26
  metrika.reachGoals(metrikaGoals);
28
27
  }
29
- if (!pixelEvents && pixel) {
30
- pixel.trackStandard(PixelEventType.SubmitApplication, {
31
- content_category: 'custom',
32
- content_ids: Array.isArray(metrikaGoals) ? metrikaGoals : [metrikaGoals],
33
- });
34
- }
35
28
  }
36
29
  if (pixel && pixelEvents) {
37
30
  if (isButtonPixel(pixelEvents)) {
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const Fullscreen: React.FC<React.SVGProps<SVGSVGElement>>;
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { a11yHiddenSvgProps } from '../utils/svg';
3
- export const FullScreen = (props) => (React.createElement("svg", Object.assign({ xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "currentColor" }, a11yHiddenSvgProps, props),
3
+ export const Fullscreen = (props) => (React.createElement("svg", Object.assign({ xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "currentColor" }, a11yHiddenSvgProps, props),
4
4
  React.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" })));
@@ -1,7 +1,7 @@
1
1
  export * from './ArrowConstructor';
2
2
  export * from './ArrowSidebar';
3
3
  export * from './Chevron';
4
- export * from './FullScreen';
4
+ export * from './Fullscreen';
5
5
  export * from './Github';
6
6
  export * from './NavigationChevron';
7
7
  export * from './PlayVideo';
@@ -1,7 +1,7 @@
1
1
  export * from './ArrowConstructor';
2
2
  export * from './ArrowSidebar';
3
3
  export * from './Chevron';
4
- export * from './FullScreen';
4
+ export * from './Fullscreen';
5
5
  export * from './Github';
6
6
  export * from './NavigationChevron';
7
7
  export * from './PlayVideo';
@@ -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: TitleItemProps | string;
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 | ServiceDemoBlockModel | ExtendedFeaturesBlockModel | PromoFeaturesBlockModel | QuestionsBlockModel | CalculatorBlockModel | BannerBlockModel | CompaniesBlockModel | MediaBlockModel | MapBlockModel | InfoBlockModel | TableBlockModel | TabsBlockModel | HeaderBlockModel | IconsBlockModel | HeaderSliderBlockModel | CardLayoutBlockModel | ContentLayoutBlockModel | ShareBLockModel | FilterBlockModel;
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 {};
@@ -3,8 +3,6 @@ export var BlockType;
3
3
  BlockType["PromoFeaturesBlock"] = "promo-features-block";
4
4
  BlockType["ExtendedFeaturesBlock"] = "extended-features-block";
5
5
  BlockType["SliderBlock"] = "slider-block";
6
- BlockType["CalculatorBlock"] = "calculator-block";
7
- BlockType["ServiceDemoBlock"] = "service-demo-block";
8
6
  BlockType["QuestionsBlock"] = "questions-block";
9
7
  BlockType["BannerBlock"] = "banner-block";
10
8
  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
- fullScreen?: boolean;
172
+ fullscreen?: boolean;
172
173
  }
173
174
  export interface MediaComponentImageProps {
174
175
  image: ImageProps | ImageProps[] | ImageDeviceProps;
@@ -94,7 +94,7 @@ export interface LayoutItemProps extends ClassNameProps {
94
94
  media: MediaProps;
95
95
  metaInfo?: string[];
96
96
  border?: boolean;
97
- fullScreen?: boolean;
97
+ fullscreen?: boolean;
98
98
  }
99
99
  export type DividerModel = {
100
100
  type: SubBlockType.Divider;
@@ -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;
@@ -0,0 +1 @@
1
+ export {};
@@ -5,3 +5,4 @@ export * from './components';
5
5
  export * from './guards';
6
6
  export * from './react';
7
7
  export * from './navigation';
8
+ export * from './customization';
@@ -5,3 +5,4 @@ export * from './components';
5
5
  export * from './guards';
6
6
  export * from './react';
7
7
  export * from './navigation';
8
+ export * from './customization';
@@ -28,7 +28,6 @@ export function generateDefaultSchema(config) {
28
28
  'info-block',
29
29
  'table-block',
30
30
  'tabs-block',
31
- 'preview-block',
32
31
  'price-detailed',
33
32
  'header-slider-block',
34
33
  'cards-with-image-block',
@@ -1114,6 +1114,9 @@ export declare const MediaProps: {
1114
1114
  type: string;
1115
1115
  })[];
1116
1116
  };
1117
+ fullscreen: {
1118
+ type: string;
1119
+ };
1117
1120
  };
1118
1121
  export declare const YMapMarkerLabel: {
1119
1122
  type: string;
@@ -453,6 +453,9 @@ export const MediaProps = {
453
453
  type: 'string',
454
454
  },
455
455
  dataLens: DataLensProps,
456
+ fullscreen: {
457
+ type: 'boolean',
458
+ },
456
459
  };
457
460
  export const YMapMarkerLabel = {
458
461
  type: 'object',
@@ -1,4 +1,3 @@
1
- import { __rest } from "tslib";
2
1
  import React from 'react';
3
2
  import { Button, Title, YFMWrapper } from '../../components';
4
3
  import LinkBlock from '../../components/Link/Link';
@@ -35,9 +34,9 @@ function getButtonSize(size) {
35
34
  }
36
35
  const Content = (props) => {
37
36
  const { title, text, additionalInfo, size = 'l', links, buttons, colSizes = { all: 12, sm: 8 }, centered, theme, className, } = props;
38
- const titleProps = __rest(!title || typeof title === 'string'
37
+ const titleProps = !title || typeof title === 'string'
39
38
  ? { text: title, textSize: getTextSize(size) }
40
- : Object.assign({}, title), []);
39
+ : title;
41
40
  const hasTitle = Boolean(title);
42
41
  return (React.createElement(Col, { className: b({ size, centered, theme }, className), reset: true, sizes: colSizes },
43
42
  title && React.createElement(Title, { className: b('title'), title: titleProps, colSizes: { all: 12 } }),
@@ -1,4 +1,4 @@
1
1
  import { LayoutItemProps } from '../../models';
2
2
  import './LayoutItem.css';
3
- declare const LayoutItem: ({ content: { links, ...content }, metaInfo, media, border, fullScreen, className, }: LayoutItemProps) => JSX.Element;
3
+ declare const LayoutItem: ({ content: { links, ...content }, metaInfo, media, border, fullscreen, className, }: LayoutItemProps) => JSX.Element;
4
4
  export default LayoutItem;
@@ -1,17 +1,17 @@
1
1
  import { __rest } from "tslib";
2
2
  import React from 'react';
3
3
  import { Content } from '..';
4
- import { FullScreenMedia, Media, MetaInfo } from '../../components';
4
+ import { FullscreenMedia, Media, MetaInfo } from '../../components';
5
5
  import { block } from '../../utils';
6
- import { getLayoutItemLinks, hasFullScreen, showFullScreenIcon } from './utils';
6
+ import { getLayoutItemLinks, hasFullscreen, showFullscreenIcon } from './utils';
7
7
  import './LayoutItem.css';
8
8
  const b = block('layout-item');
9
9
  const LayoutItem = (_a) => {
10
- var _b = _a.content, { links } = _b, content = __rest(_b, ["links"]), { metaInfo, media, border, fullScreen, className } = _a;
10
+ var _b = _a.content, { links } = _b, content = __rest(_b, ["links"]), { metaInfo, media, border, fullscreen, className } = _a;
11
11
  return (React.createElement("div", { className: b(null, className) },
12
- fullScreen && hasFullScreen(media) ? (React.createElement(FullScreenMedia, { showFullScreenIcon: showFullScreenIcon(media) }, (_a = {}) => {
13
- var { className: mediaClassName } = _a, fullScreenMediaProps = __rest(_a, ["className"]);
14
- return (React.createElement(Media, Object.assign({}, media, fullScreenMediaProps, { className: b('media', { border }, mediaClassName) })));
12
+ fullscreen && hasFullscreen(media) ? (React.createElement(FullscreenMedia, { showFullscreenIcon: showFullscreenIcon(media) }, (_a = {}) => {
13
+ var { className: mediaClassName, fullscreen: _fullscreen } = _a, fullscreenMediaProps = __rest(_a, ["className", "fullscreen"]);
14
+ return (React.createElement(Media, Object.assign({}, media, fullscreenMediaProps, { className: b('media', { border }, mediaClassName) })));
15
15
  })) : (React.createElement(Media, Object.assign({}, media, { className: b('media', { border }) }))),
16
16
  metaInfo && React.createElement(MetaInfo, { items: metaInfo, className: b('meta-info') }),
17
17
  React.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
- fullScreen: {
215
+ fullscreen: {
213
216
  type: string;
214
217
  };
215
218
  type: {};
@@ -8,7 +8,7 @@ export const LayoutItem = {
8
8
  required: ['content', 'media'],
9
9
  properties: Object.assign(Object.assign({}, BaseProps), { media: MediaProps, content: omit(ContentBase, ['colSize', 'size', 'centered']), metaInfo: metaInfo, border: {
10
10
  type: 'boolean',
11
- }, fullScreen: {
11
+ }, fullscreen: {
12
12
  type: 'boolean',
13
13
  } }),
14
14
  };
@@ -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 hasFullScreen: ({ dataLens, image }: MediaProps) => boolean;
28
- export declare const showFullScreenIcon: ({ youtube }: MediaProps) => boolean;
27
+ export declare const hasFullscreen: ({ dataLens, image }: MediaProps) => boolean;
28
+ export declare const showFullscreenIcon: ({ youtube }: MediaProps) => boolean;
@@ -1,6 +1,6 @@
1
1
  export const getLayoutItemLinks = (links) => links === null || links === void 0 ? void 0 : links.map((link) => (Object.assign({ theme: 'normal' }, link)));
2
- export const hasFullScreen = ({ dataLens, image }) => {
3
- // datalens and slider media card don't support fullScreen mode
2
+ export const hasFullscreen = ({ dataLens, image }) => {
3
+ // datalens and slider media card don't support fullscreen mode
4
4
  return !(dataLens || Array.isArray(image));
5
5
  };
6
- export const showFullScreenIcon = ({ youtube }) => !youtube;
6
+ export const showFullscreenIcon = ({ youtube }) => !youtube;
@@ -134,6 +134,9 @@ export declare const MediaCardBlock: {
134
134
  type: string;
135
135
  })[];
136
136
  };
137
+ fullscreen: {
138
+ type: string;
139
+ };
137
140
  type: {};
138
141
  when: {};
139
142
  };
@@ -1,3 +1,5 @@
1
+ /* eslint-disable no-param-reassign */
2
+ /* eslint-disable no-not-accumulator-reassign/no-not-accumulator-reassign */
1
3
  import _ from 'lodash';
2
4
  import { config } from './config';
3
5
  function transformBlocks(blocks, lang, customConfig = {}) {
@@ -9,7 +11,6 @@ function transformBlock(lang, blocksConfig, block) {
9
11
  const blockConfig = blocksConfig[block.type];
10
12
  if (block) {
11
13
  if ('randomOrder' in block && block.randomOrder && 'children' in block && block.children) {
12
- // eslint-disable-next-line no-not-accumulator-reassign/no-not-accumulator-reassign, no-param-reassign
13
14
  block.children = _.shuffle(block.children);
14
15
  }
15
16
  }
@@ -22,11 +23,9 @@ function transformBlock(lang, blocksConfig, block) {
22
23
  fields.forEach((field) => {
23
24
  if (block[field]) {
24
25
  if (parser) {
25
- // eslint-disable-next-line no-not-accumulator-reassign/no-not-accumulator-reassign, no-param-reassign
26
26
  block[field] = parser(transformer, block[field]);
27
27
  }
28
28
  else if (typeof block[field] === 'string') {
29
- // eslint-disable-next-line no-not-accumulator-reassign/no-not-accumulator-reassign, no-param-reassign
30
29
  block[field] = transformer(block[field]);
31
30
  }
32
31
  }
@@ -38,7 +37,6 @@ function transformBlock(lang, blocksConfig, block) {
38
37
  });
39
38
  }
40
39
  if ('children' in block && block.children) {
41
- // eslint-disable-next-line no-not-accumulator-reassign/no-not-accumulator-reassign, no-param-reassign
42
40
  block.children = transformBlocks(block.children, lang, blocksConfig);
43
41
  }
44
42
  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;
@@ -37,6 +37,12 @@ const getShareUrlWithParams = (url, params = {}) => {
37
37
  });
38
38
  return result.toString();
39
39
  };
40
+ export const getOrderedBlocks = (blocks, headerBlockTypes = []) => {
41
+ return blocks.filter(({ type }) => !headerBlockTypes.includes(type));
42
+ };
43
+ export const getHeaderBlock = (blocks, headerBlockTypes = []) => {
44
+ return blocks.find(({ type }) => headerBlockTypes.includes(type));
45
+ };
40
46
  export const getShareLink = (url, type, title, text) => {
41
47
  // https://github.com/bradvin/social-share-urls
42
48
  switch (type) {
@@ -65,3 +71,4 @@ export const getShareLink = (url, type, title, text) => {
65
71
  return undefined;
66
72
  }
67
73
  };
74
+ export 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()); };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/page-constructor",
3
- "version": "3.0.0-alpha.5",
3
+ "version": "4.0.0-beta.0",
4
4
  "description": "Gravity UI Page Constructor",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -61,15 +61,16 @@
61
61
  "uuid": "^9.0.0"
62
62
  },
63
63
  "peerDependencies": {
64
- "react": "^16.0.0 || ^17.0.0 || ^18.0.0",
64
+ "@doc-tools/transform": "^2.6.1",
65
65
  "@gravity-ui/uikit": "^4.1.0",
66
- "@doc-tools/transform": "^2.6.1"
66
+ "react": "^16.0.0 || ^17.0.0 || ^18.0.0"
67
67
  },
68
68
  "devDependencies": {
69
69
  "@commitlint/cli": "^17.1.2",
70
70
  "@commitlint/config-conventional": "^17.1.0",
71
71
  "@doc-tools/transform": "2.12.0",
72
72
  "@gravity-ui/eslint-config": "^2.0.0",
73
+ "@gravity-ui/icons": "^2.1.0",
73
74
  "@gravity-ui/prettier-config": "^1.0.1",
74
75
  "@gravity-ui/stylelint-config": "^1.0.0",
75
76
  "@gravity-ui/tsconfig": "^1.0.0",
@@ -138,8 +139,5 @@
138
139
  "*.{json,yaml,yml,md}": [
139
140
  "prettier --write"
140
141
  ]
141
- },
142
- "publishConfig": {
143
- "tag": "alpha"
144
142
  }
145
143
  }
@@ -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: TitleItemProps | string;
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 | ServiceDemoBlockModel | ExtendedFeaturesBlockModel | PromoFeaturesBlockModel | QuestionsBlockModel | CalculatorBlockModel | BannerBlockModel | CompaniesBlockModel | MediaBlockModel | MapBlockModel | InfoBlockModel | TableBlockModel | TabsBlockModel | HeaderBlockModel | IconsBlockModel | HeaderSliderBlockModel | CardLayoutBlockModel | ContentLayoutBlockModel | ShareBLockModel | FilterBlockModel;
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
- fullScreen?: boolean;
172
+ fullscreen?: boolean;
172
173
  }
173
174
  export interface MediaComponentImageProps {
174
175
  image: ImageProps | ImageProps[] | ImageDeviceProps;
@@ -94,7 +94,7 @@ export interface LayoutItemProps extends ClassNameProps {
94
94
  media: MediaProps;
95
95
  metaInfo?: string[];
96
96
  border?: boolean;
97
- fullScreen?: boolean;
97
+ fullscreen?: boolean;
98
98
  }
99
99
  export type DividerModel = {
100
100
  type: SubBlockType.Divider;
@@ -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 {};