@gravity-ui/page-constructor 4.38.1 → 4.39.1

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 (48) hide show
  1. package/README.md +1 -1
  2. package/build/cjs/blocks/Header/schema.d.ts +60 -0
  3. package/build/cjs/blocks/HeaderSlider/schema.d.ts +20 -0
  4. package/build/cjs/blocks/Media/schema.d.ts +40 -0
  5. package/build/cjs/blocks/PromoFeaturesBlock/schema.d.ts +20 -0
  6. package/build/cjs/blocks/Tabs/schema.d.ts +20 -0
  7. package/build/cjs/components/Media/Iframe/Iframe.css +18 -0
  8. package/build/cjs/components/Media/Iframe/Iframe.d.ts +3 -0
  9. package/build/cjs/components/Media/Iframe/Iframe.js +14 -0
  10. package/build/cjs/components/Media/Iframe/i18n/en.json +3 -0
  11. package/build/cjs/components/Media/Iframe/i18n/index.d.ts +2 -0
  12. package/build/cjs/components/Media/Iframe/i18n/index.js +8 -0
  13. package/build/cjs/components/Media/Iframe/i18n/ru.json +3 -0
  14. package/build/cjs/components/Media/Image/Image.js +1 -1
  15. package/build/cjs/components/Media/Media.js +7 -1
  16. package/build/cjs/containers/PageConstructor/PageConstructor.js +2 -2
  17. package/build/cjs/models/constructor-items/common.d.ts +12 -1
  18. package/build/cjs/schema/constants.d.ts +20 -0
  19. package/build/cjs/schema/validators/common.d.ts +20 -0
  20. package/build/cjs/schema/validators/common.js +21 -0
  21. package/build/cjs/sub-blocks/LayoutItem/schema.d.ts +20 -0
  22. package/build/cjs/sub-blocks/MediaCard/schema.d.ts +20 -0
  23. package/build/cjs/sub-blocks/PriceCard/schema.d.ts +20 -0
  24. package/build/esm/blocks/Header/schema.d.ts +60 -0
  25. package/build/esm/blocks/HeaderSlider/schema.d.ts +20 -0
  26. package/build/esm/blocks/Media/schema.d.ts +40 -0
  27. package/build/esm/blocks/PromoFeaturesBlock/schema.d.ts +20 -0
  28. package/build/esm/blocks/Tabs/schema.d.ts +20 -0
  29. package/build/esm/components/Media/Iframe/Iframe.css +18 -0
  30. package/build/esm/components/Media/Iframe/Iframe.d.ts +4 -0
  31. package/build/esm/components/Media/Iframe/Iframe.js +12 -0
  32. package/build/esm/components/Media/Iframe/i18n/en.json +3 -0
  33. package/build/esm/components/Media/Iframe/i18n/index.d.ts +2 -0
  34. package/build/esm/components/Media/Iframe/i18n/index.js +5 -0
  35. package/build/esm/components/Media/Iframe/i18n/ru.json +3 -0
  36. package/build/esm/components/Media/Image/Image.js +1 -1
  37. package/build/esm/components/Media/Media.js +7 -1
  38. package/build/esm/containers/PageConstructor/PageConstructor.js +2 -2
  39. package/build/esm/models/constructor-items/common.d.ts +12 -1
  40. package/build/esm/schema/constants.d.ts +20 -0
  41. package/build/esm/schema/validators/common.d.ts +20 -0
  42. package/build/esm/schema/validators/common.js +21 -0
  43. package/build/esm/sub-blocks/LayoutItem/schema.d.ts +20 -0
  44. package/build/esm/sub-blocks/MediaCard/schema.d.ts +20 -0
  45. package/build/esm/sub-blocks/PriceCard/schema.d.ts +20 -0
  46. package/package.json +1 -1
  47. package/server/models/constructor-items/common.d.ts +12 -1
  48. package/widget/index.js +1 -1
package/README.md CHANGED
@@ -184,7 +184,7 @@ Sub-blocks are components that can be used in the block `children` property. In
184
184
 
185
185
  1. In the `src/blocks` or `src/sub-blocks` directory, create a folder with the block or sub-block code.
186
186
 
187
- 2. Add the block or sub-block name to enum `BlockType` or`SubBlockType` and describe its properties in the `src/models/blocks.ts` or `src/models/sub-blocks.ts` file in a similar way to the existing ones.
187
+ 2. Add the block or sub-block name to enum `BlockType` or`SubBlockType` and describe its properties in the `src/models/constructor-items/blocks.ts` or `src/models/constructor-items/sub-blocks.ts` file in a similar way to the existing ones.
188
188
 
189
189
  3. Add export for the block in the `src/blocks/index.ts` file and for the sub-block in the `src/sub-blocks/index.ts` file.
190
190
 
@@ -251,6 +251,26 @@ export declare const HeaderBackgroundProps: {
251
251
  ratio: {
252
252
  type: string;
253
253
  };
254
+ iframe: {
255
+ src: {
256
+ type: string;
257
+ };
258
+ name: {
259
+ type: string;
260
+ };
261
+ title: {
262
+ type: string;
263
+ };
264
+ height: {
265
+ type: string;
266
+ };
267
+ width: {
268
+ type: string;
269
+ };
270
+ };
271
+ margins: {
272
+ type: string;
273
+ };
254
274
  };
255
275
  };
256
276
  export declare const HeaderProperties: {
@@ -686,6 +706,26 @@ export declare const HeaderProperties: {
686
706
  ratio: {
687
707
  type: string;
688
708
  };
709
+ iframe: {
710
+ src: {
711
+ type: string;
712
+ };
713
+ name: {
714
+ type: string;
715
+ };
716
+ title: {
717
+ type: string;
718
+ };
719
+ height: {
720
+ type: string;
721
+ };
722
+ width: {
723
+ type: string;
724
+ };
725
+ };
726
+ margins: {
727
+ type: string;
728
+ };
689
729
  };
690
730
  } & {
691
731
  optionName: string;
@@ -1170,6 +1210,26 @@ export declare const HeaderBlock: {
1170
1210
  ratio: {
1171
1211
  type: string;
1172
1212
  };
1213
+ iframe: {
1214
+ src: {
1215
+ type: string;
1216
+ };
1217
+ name: {
1218
+ type: string;
1219
+ };
1220
+ title: {
1221
+ type: string;
1222
+ };
1223
+ height: {
1224
+ type: string;
1225
+ };
1226
+ width: {
1227
+ type: string;
1228
+ };
1229
+ };
1230
+ margins: {
1231
+ type: string;
1232
+ };
1173
1233
  };
1174
1234
  } & {
1175
1235
  optionName: string;
@@ -442,6 +442,26 @@ export declare const HeaderSliderBlock: {
442
442
  ratio: {
443
443
  type: string;
444
444
  };
445
+ iframe: {
446
+ src: {
447
+ type: string;
448
+ };
449
+ name: {
450
+ type: string;
451
+ };
452
+ title: {
453
+ type: string;
454
+ };
455
+ height: {
456
+ type: string;
457
+ };
458
+ width: {
459
+ type: string;
460
+ };
461
+ };
462
+ margins: {
463
+ type: string;
464
+ };
445
465
  };
446
466
  } & {
447
467
  optionName: string;
@@ -245,6 +245,26 @@ export declare const Media: {
245
245
  ratio: {
246
246
  type: string;
247
247
  };
248
+ iframe: {
249
+ src: {
250
+ type: string;
251
+ };
252
+ name: {
253
+ type: string;
254
+ };
255
+ title: {
256
+ type: string;
257
+ };
258
+ height: {
259
+ type: string;
260
+ };
261
+ width: {
262
+ type: string;
263
+ };
264
+ };
265
+ margins: {
266
+ type: string;
267
+ };
248
268
  };
249
269
  };
250
270
  export declare const MediaBlockBaseProps: {
@@ -870,6 +890,26 @@ export declare const MediaBlock: {
870
890
  ratio: {
871
891
  type: string;
872
892
  };
893
+ iframe: {
894
+ src: {
895
+ type: string;
896
+ };
897
+ name: {
898
+ type: string;
899
+ };
900
+ title: {
901
+ type: string;
902
+ };
903
+ height: {
904
+ type: string;
905
+ };
906
+ width: {
907
+ type: string;
908
+ };
909
+ };
910
+ margins: {
911
+ type: string;
912
+ };
873
913
  };
874
914
  } & {
875
915
  optionName: string;
@@ -261,6 +261,26 @@ export declare const PromoFeaturesItem: {
261
261
  ratio: {
262
262
  type: string;
263
263
  };
264
+ iframe: {
265
+ src: {
266
+ type: string;
267
+ };
268
+ name: {
269
+ type: string;
270
+ };
271
+ title: {
272
+ type: string;
273
+ };
274
+ height: {
275
+ type: string;
276
+ };
277
+ width: {
278
+ type: string;
279
+ };
280
+ };
281
+ margins: {
282
+ type: string;
283
+ };
264
284
  };
265
285
  };
266
286
  };
@@ -256,6 +256,26 @@ export declare const tabsItem: {
256
256
  ratio: {
257
257
  type: string;
258
258
  };
259
+ iframe: {
260
+ src: {
261
+ type: string;
262
+ };
263
+ name: {
264
+ type: string;
265
+ };
266
+ title: {
267
+ type: string;
268
+ };
269
+ height: {
270
+ type: string;
271
+ };
272
+ width: {
273
+ type: string;
274
+ };
275
+ };
276
+ margins: {
277
+ type: string;
278
+ };
259
279
  };
260
280
  } & {
261
281
  optionName: string;
@@ -0,0 +1,18 @@
1
+ /* use this for style redefinitions to awoid problems with
2
+ unpredictable css rules order in build */
3
+ .pc-media-component-iframe {
4
+ overflow: hidden;
5
+ }
6
+ .pc-media-component-iframe_margins {
7
+ margin: 24px;
8
+ }
9
+ .pc-media-component-iframe_margins .pc-media-component-iframe__item {
10
+ border-radius: 0;
11
+ }
12
+ .pc-media-component-iframe .pc-media-component-iframe__iframe {
13
+ border-radius: 0;
14
+ }
15
+ .pc-media-component-iframe__item {
16
+ width: 100%;
17
+ height: 100%;
18
+ }
@@ -0,0 +1,3 @@
1
+ import { MediaComponentIframeProps } from '../../../models';
2
+ declare const Iframe: (props: MediaComponentIframeProps) => JSX.Element | null;
3
+ export default Iframe;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const react_1 = tslib_1.__importDefault(require("react"));
5
+ const utils_1 = require("../../../utils");
6
+ const i18n_1 = tslib_1.__importDefault(require("./i18n"));
7
+ const b = (0, utils_1.block)('media-component-iframe');
8
+ const Iframe = (props) => {
9
+ const { iframe, margins = true } = props;
10
+ const { height = 400, src, width, name, title } = iframe;
11
+ return iframe ? (react_1.default.createElement("div", { className: b({ margins }), style: { height } },
12
+ react_1.default.createElement("iframe", { className: b('item'), loading: "lazy", title: title || (0, i18n_1.default)('iframe-title'), frameBorder: 0, src: src, width: width, height: height, name: name }))) : null;
13
+ };
14
+ exports.default = Iframe;
@@ -0,0 +1,3 @@
1
+ {
2
+ "iframe-title": "Datalens frame"
3
+ }
@@ -0,0 +1,2 @@
1
+ declare const _default: (key: string, params?: import("@gravity-ui/i18n").Params | undefined) => string;
2
+ export default _default;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const registerKeyset_1 = require("../../../../utils/registerKeyset");
5
+ const en_json_1 = tslib_1.__importDefault(require("./en.json"));
6
+ const ru_json_1 = tslib_1.__importDefault(require("./ru.json"));
7
+ const COMPONENT = 'Iframe';
8
+ exports.default = (0, registerKeyset_1.registerKeyset)({ en: en_json_1.default, ru: ru_json_1.default }, COMPONENT);
@@ -0,0 +1,3 @@
1
+ {
2
+ "iframe-title": "Фрейм данных"
3
+ }
@@ -53,7 +53,7 @@ const Image = (props) => {
53
53
  };
54
54
  const imageSlider = (imageArray) => {
55
55
  const fullscreenItem = fullscreen === undefined || fullscreen;
56
- return (react_1.default.createElement(Slider_1.default, { slidesToShow: 1, type: models_1.SliderType.MediaCard }, imageArray.map((item, index) => (react_1.default.createElement(react_1.Fragment, { key: index }, fullscreenItem ? renderFullscreenImage(item) : imageOnly(item))))));
56
+ return (react_1.default.createElement(Slider_1.default, { slidesToShow: 1, type: models_1.SliderType.MediaCard, animated: parallax }, imageArray.map((item, index) => (react_1.default.createElement(react_1.Fragment, { key: index }, fullscreenItem ? renderFullscreenImage(item) : imageOnly(item))))));
57
57
  };
58
58
  if (Array.isArray(image)) {
59
59
  return imageSlider(image);
@@ -7,11 +7,12 @@ const utils_1 = require("../../utils");
7
7
  const VideoBlock_1 = tslib_1.__importDefault(require("../VideoBlock/VideoBlock"));
8
8
  const DataLens_1 = tslib_1.__importDefault(require("./DataLens/DataLens"));
9
9
  const FullscreenVideo_1 = tslib_1.__importDefault(require("./FullscreenVideo/FullscreenVideo"));
10
+ const Iframe_1 = tslib_1.__importDefault(require("./Iframe/Iframe"));
10
11
  const Image_1 = tslib_1.__importDefault(require("./Image/Image"));
11
12
  const Video_1 = tslib_1.__importDefault(require("./Video/Video"));
12
13
  const b = (0, utils_1.block)('Media');
13
14
  const Media = (props) => {
14
- const { image, video, youtube, dataLens, color, height, previewImg, parallax = false, metrika, fullscreen, analyticsEvents, className, imageClassName, videoClassName, youtubeClassName, playVideo = true, isBackground, playButton, customBarControlsClassName, qa, ratio, autoplay, onImageLoad, } = props;
15
+ const { image, video, youtube, dataLens, color, height, previewImg, parallax = false, metrika, fullscreen, analyticsEvents, className, imageClassName, videoClassName, youtubeClassName, playVideo = true, isBackground, playButton, customBarControlsClassName, qa, ratio, autoplay, onImageLoad, iframe, margins, } = props;
15
16
  const [hasVideoFallback, setHasVideoFallback] = (0, react_1.useState)(false);
16
17
  const qaAttributes = (0, utils_1.getQaAttrubutes)(qa, 'video');
17
18
  const content = (0, react_1.useMemo)(() => {
@@ -48,12 +49,16 @@ const Media = (props) => {
48
49
  if (dataLens) {
49
50
  result = react_1.default.createElement(DataLens_1.default, { dataLens: dataLens });
50
51
  }
52
+ if (iframe) {
53
+ result = react_1.default.createElement(Iframe_1.default, { iframe: iframe, margins: margins });
54
+ }
51
55
  return result;
52
56
  }, [
53
57
  image,
54
58
  video,
55
59
  youtube,
56
60
  dataLens,
61
+ iframe,
57
62
  parallax,
58
63
  height,
59
64
  imageClassName,
@@ -73,6 +78,7 @@ const Media = (props) => {
73
78
  ratio,
74
79
  youtubeClassName,
75
80
  autoplay,
81
+ margins,
76
82
  ]);
77
83
  return (react_1.default.createElement("div", { className: b(null, className), style: { backgroundColor: color }, "data-qa": qa }, content));
78
84
  };
@@ -19,7 +19,7 @@ const ConstructorItem_1 = require("./components/ConstructorItem");
19
19
  const ConstructorRow_1 = require("./components/ConstructorRow");
20
20
  const b = (0, utils_1.block)('page-constructor');
21
21
  const Constructor = (props) => {
22
- const { content: { blocks = [], background = {} } = {}, renderMenu, shouldRenderBlock, navigation, custom, } = props;
22
+ const { content: { blocks = [], background } = {}, renderMenu, shouldRenderBlock, navigation, custom, } = props;
23
23
  const { context } = (0, react_1.useMemo)(() => ({
24
24
  context: {
25
25
  blockTypes: [...models_1.BlockTypes, ...(0, utils_1.getCustomTypes)(['blocks', 'headers'], custom)],
@@ -43,7 +43,7 @@ const Constructor = (props) => {
43
43
  const restBlocks = (0, utils_1.getOrderedBlocks)(blocks, context.headerBlockTypes);
44
44
  const themedBackground = (0, utils_1.getThemedValue)(background, theme);
45
45
  return (react_1.default.createElement(innerContext_1.InnerContext.Provider, { value: context },
46
- react_1.default.createElement(RootCn_1.default, null,
46
+ react_1.default.createElement(RootCn_1.default, { className: b() },
47
47
  react_1.default.createElement("div", { className: b('wrapper') },
48
48
  themedBackground && (react_1.default.createElement(BackgroundMedia_1.default, Object.assign({}, themedBackground, { className: b('background') }))),
49
49
  react_1.default.createElement(Layout_1.default, { navigation: navigation },
@@ -200,7 +200,11 @@ export interface MediaComponentImageProps {
200
200
  export interface MediaComponentDataLensProps {
201
201
  dataLens: DataLensProps;
202
202
  }
203
- export interface MediaProps extends Animatable, Partial<MediaComponentDataLensProps>, Partial<MediaComponentYoutubeProps>, Partial<MediaComponentImageProps>, Partial<MediaComponentVideoProps> {
203
+ export interface MediaComponentIframeProps {
204
+ iframe: IframeProps;
205
+ margins?: boolean;
206
+ }
207
+ export interface MediaProps extends Animatable, Partial<MediaComponentDataLensProps>, Partial<MediaComponentYoutubeProps>, Partial<MediaComponentImageProps>, Partial<MediaComponentIframeProps>, Partial<MediaComponentVideoProps> {
204
208
  color?: string;
205
209
  }
206
210
  export interface BackgroundMediaProps extends MediaProps, Animatable, QAProps {
@@ -253,6 +257,13 @@ export interface DataLensObjectProps {
253
257
  id: string;
254
258
  theme: 'dark' | 'light';
255
259
  }
260
+ export interface IframeProps {
261
+ src: string;
262
+ width?: number;
263
+ height?: number;
264
+ title?: string;
265
+ name?: string;
266
+ }
256
267
  export type DataLensProps = string | DataLensObjectProps;
257
268
  export interface AuthorItem {
258
269
  firstName: string;
@@ -1098,6 +1098,26 @@ export declare const cardSchemas: {
1098
1098
  ratio: {
1099
1099
  type: string;
1100
1100
  };
1101
+ iframe: {
1102
+ src: {
1103
+ type: string;
1104
+ };
1105
+ name: {
1106
+ type: string;
1107
+ };
1108
+ title: {
1109
+ type: string;
1110
+ };
1111
+ height: {
1112
+ type: string;
1113
+ };
1114
+ width: {
1115
+ type: string;
1116
+ };
1117
+ };
1118
+ margins: {
1119
+ type: string;
1120
+ };
1101
1121
  border: {
1102
1122
  type: string;
1103
1123
  enum: string[];
@@ -1353,6 +1353,26 @@ export declare const MediaProps: {
1353
1353
  ratio: {
1354
1354
  type: string;
1355
1355
  };
1356
+ iframe: {
1357
+ src: {
1358
+ type: string;
1359
+ };
1360
+ name: {
1361
+ type: string;
1362
+ };
1363
+ title: {
1364
+ type: string;
1365
+ };
1366
+ height: {
1367
+ type: string;
1368
+ };
1369
+ width: {
1370
+ type: string;
1371
+ };
1372
+ };
1373
+ margins: {
1374
+ type: string;
1375
+ };
1356
1376
  };
1357
1377
  export declare const YMapMarkerLabel: {
1358
1378
  type: string;
@@ -500,6 +500,23 @@ exports.ButtonBlock = {
500
500
  required: ['text', 'url'],
501
501
  },
502
502
  };
503
+ const IframeProps = {
504
+ src: {
505
+ type: 'string',
506
+ },
507
+ name: {
508
+ type: 'string',
509
+ },
510
+ title: {
511
+ type: 'string',
512
+ },
513
+ height: {
514
+ type: 'number',
515
+ },
516
+ width: {
517
+ type: 'number',
518
+ },
519
+ };
503
520
  exports.MediaProps = {
504
521
  color: {
505
522
  type: 'string',
@@ -533,6 +550,10 @@ exports.MediaProps = {
533
550
  ratio: {
534
551
  type: 'number',
535
552
  },
553
+ iframe: Object.assign({}, IframeProps),
554
+ margins: {
555
+ type: 'number',
556
+ },
536
557
  };
537
558
  exports.YMapMarkerLabel = {
538
559
  type: 'object',
@@ -246,6 +246,26 @@ export declare const LayoutItem: {
246
246
  ratio: {
247
247
  type: string;
248
248
  };
249
+ iframe: {
250
+ src: {
251
+ type: string;
252
+ };
253
+ name: {
254
+ type: string;
255
+ };
256
+ title: {
257
+ type: string;
258
+ };
259
+ height: {
260
+ type: string;
261
+ };
262
+ width: {
263
+ type: string;
264
+ };
265
+ };
266
+ margins: {
267
+ type: string;
268
+ };
249
269
  };
250
270
  content: Partial<{
251
271
  title: {
@@ -251,6 +251,26 @@ export declare const MediaCardBlock: {
251
251
  ratio: {
252
252
  type: string;
253
253
  };
254
+ iframe: {
255
+ src: {
256
+ type: string;
257
+ };
258
+ name: {
259
+ type: string;
260
+ };
261
+ title: {
262
+ type: string;
263
+ };
264
+ height: {
265
+ type: string;
266
+ };
267
+ width: {
268
+ type: string;
269
+ };
270
+ };
271
+ margins: {
272
+ type: string;
273
+ };
254
274
  border: {
255
275
  type: string;
256
276
  enum: string[];
@@ -635,6 +635,26 @@ export declare const PriceCardBlock: {
635
635
  ratio: {
636
636
  type: string;
637
637
  };
638
+ iframe: {
639
+ src: {
640
+ type: string;
641
+ };
642
+ name: {
643
+ type: string;
644
+ };
645
+ title: {
646
+ type: string;
647
+ };
648
+ height: {
649
+ type: string;
650
+ };
651
+ width: {
652
+ type: string;
653
+ };
654
+ };
655
+ margins: {
656
+ type: string;
657
+ };
638
658
  border: {
639
659
  type: string;
640
660
  enum: string[];
@@ -251,6 +251,26 @@ export declare const HeaderBackgroundProps: {
251
251
  ratio: {
252
252
  type: string;
253
253
  };
254
+ iframe: {
255
+ src: {
256
+ type: string;
257
+ };
258
+ name: {
259
+ type: string;
260
+ };
261
+ title: {
262
+ type: string;
263
+ };
264
+ height: {
265
+ type: string;
266
+ };
267
+ width: {
268
+ type: string;
269
+ };
270
+ };
271
+ margins: {
272
+ type: string;
273
+ };
254
274
  };
255
275
  };
256
276
  export declare const HeaderProperties: {
@@ -686,6 +706,26 @@ export declare const HeaderProperties: {
686
706
  ratio: {
687
707
  type: string;
688
708
  };
709
+ iframe: {
710
+ src: {
711
+ type: string;
712
+ };
713
+ name: {
714
+ type: string;
715
+ };
716
+ title: {
717
+ type: string;
718
+ };
719
+ height: {
720
+ type: string;
721
+ };
722
+ width: {
723
+ type: string;
724
+ };
725
+ };
726
+ margins: {
727
+ type: string;
728
+ };
689
729
  };
690
730
  } & {
691
731
  optionName: string;
@@ -1170,6 +1210,26 @@ export declare const HeaderBlock: {
1170
1210
  ratio: {
1171
1211
  type: string;
1172
1212
  };
1213
+ iframe: {
1214
+ src: {
1215
+ type: string;
1216
+ };
1217
+ name: {
1218
+ type: string;
1219
+ };
1220
+ title: {
1221
+ type: string;
1222
+ };
1223
+ height: {
1224
+ type: string;
1225
+ };
1226
+ width: {
1227
+ type: string;
1228
+ };
1229
+ };
1230
+ margins: {
1231
+ type: string;
1232
+ };
1173
1233
  };
1174
1234
  } & {
1175
1235
  optionName: string;
@@ -442,6 +442,26 @@ export declare const HeaderSliderBlock: {
442
442
  ratio: {
443
443
  type: string;
444
444
  };
445
+ iframe: {
446
+ src: {
447
+ type: string;
448
+ };
449
+ name: {
450
+ type: string;
451
+ };
452
+ title: {
453
+ type: string;
454
+ };
455
+ height: {
456
+ type: string;
457
+ };
458
+ width: {
459
+ type: string;
460
+ };
461
+ };
462
+ margins: {
463
+ type: string;
464
+ };
445
465
  };
446
466
  } & {
447
467
  optionName: string;