@gravity-ui/page-constructor 1.2.3-alpha.3 → 1.2.4

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 (72) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/build/cjs/blocks/Companies/Companies.js +6 -2
  3. package/build/cjs/blocks/ContentLayout/schema.js +1 -2
  4. package/build/cjs/blocks/Header/Header.css +9 -2
  5. package/build/cjs/blocks/Header/Header.js +9 -6
  6. package/build/cjs/blocks/Header/schema.d.ts +244 -196
  7. package/build/cjs/blocks/Header/schema.js +23 -3
  8. package/build/cjs/blocks/HeaderSlider/schema.d.ts +122 -98
  9. package/build/cjs/blocks/Tabs/Tabs.js +2 -3
  10. package/build/cjs/blocks/Tabs/schema.js +1 -2
  11. package/build/cjs/components/BackgroundImage/BackgroundImage.js +2 -2
  12. package/build/cjs/components/FullscreenImage/FullscreenImage.d.ts +2 -2
  13. package/build/cjs/components/Image/Image.d.ts +5 -3
  14. package/build/cjs/components/Image/Image.js +5 -9
  15. package/build/cjs/components/Media/Image/Image.js +3 -3
  16. package/build/cjs/components/Media/Image/utils.d.ts +2 -2
  17. package/build/cjs/models/constructor-items/blocks.d.ts +9 -5
  18. package/build/cjs/models/constructor-items/common.d.ts +7 -11
  19. package/build/cjs/models/guards.d.ts +3 -2
  20. package/build/cjs/models/guards.js +5 -1
  21. package/build/cjs/schema/validators/common.d.ts +31 -0
  22. package/build/cjs/schema/validators/common.js +32 -5
  23. package/build/cjs/sub-blocks/BackgroundCard/schema.js +1 -2
  24. package/build/cjs/sub-blocks/BasicCard/BasicCard.js +1 -1
  25. package/build/cjs/sub-blocks/BasicCard/schema.js +1 -2
  26. package/build/cjs/sub-blocks/Content/Content.css +2 -1
  27. package/build/cjs/sub-blocks/Partner/Partner.js +1 -1
  28. package/build/cjs/sub-blocks/Partner/schema.js +1 -2
  29. package/build/cjs/sub-blocks/Quote/Quote.js +2 -3
  30. package/build/cjs/sub-blocks/Quote/schema.js +3 -4
  31. package/build/cjs/sub-blocks/TutorialCard/TutorialCard.js +2 -2
  32. package/build/cjs/sub-blocks/TutorialCard/schema.js +1 -2
  33. package/build/esm/blocks/Companies/Companies.js +6 -2
  34. package/build/esm/blocks/ContentLayout/schema.js +1 -2
  35. package/build/esm/blocks/Header/Header.css +9 -2
  36. package/build/esm/blocks/Header/Header.js +10 -7
  37. package/build/esm/blocks/Header/schema.d.ts +244 -196
  38. package/build/esm/blocks/Header/schema.js +23 -3
  39. package/build/esm/blocks/HeaderSlider/schema.d.ts +122 -98
  40. package/build/esm/blocks/Tabs/Tabs.js +2 -3
  41. package/build/esm/blocks/Tabs/schema.js +1 -2
  42. package/build/esm/components/BackgroundImage/BackgroundImage.js +2 -2
  43. package/build/esm/components/FullscreenImage/FullscreenImage.d.ts +2 -2
  44. package/build/esm/components/Image/Image.d.ts +5 -3
  45. package/build/esm/components/Image/Image.js +5 -9
  46. package/build/esm/components/Media/Image/Image.js +3 -3
  47. package/build/esm/components/Media/Image/utils.d.ts +2 -2
  48. package/build/esm/models/constructor-items/blocks.d.ts +9 -5
  49. package/build/esm/models/constructor-items/common.d.ts +7 -11
  50. package/build/esm/models/guards.d.ts +3 -2
  51. package/build/esm/models/guards.js +3 -0
  52. package/build/esm/schema/validators/common.d.ts +31 -0
  53. package/build/esm/schema/validators/common.js +28 -1
  54. package/build/esm/sub-blocks/BackgroundCard/schema.js +1 -2
  55. package/build/esm/sub-blocks/BasicCard/BasicCard.js +1 -1
  56. package/build/esm/sub-blocks/BasicCard/schema.js +1 -2
  57. package/build/esm/sub-blocks/Content/Content.css +2 -1
  58. package/build/esm/sub-blocks/Partner/Partner.js +1 -1
  59. package/build/esm/sub-blocks/Partner/schema.js +1 -2
  60. package/build/esm/sub-blocks/Quote/Quote.js +2 -3
  61. package/build/esm/sub-blocks/Quote/schema.js +1 -2
  62. package/build/esm/sub-blocks/TutorialCard/TutorialCard.js +2 -2
  63. package/build/esm/sub-blocks/TutorialCard/schema.js +1 -2
  64. package/package.json +1 -4
  65. package/server/models/constructor-items/blocks.d.ts +9 -5
  66. package/server/models/constructor-items/common.d.ts +7 -11
  67. package/server/models/guards.d.ts +3 -2
  68. package/server/models/guards.js +5 -1
  69. package/build/cjs/components/Image/schema.d.ts +0 -56
  70. package/build/cjs/components/Image/schema.js +0 -54
  71. package/build/esm/components/Image/schema.d.ts +0 -56
  72. package/build/esm/components/Image/schema.js +0 -51
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MediaProps = exports.ButtonBlock = exports.TitleProps = exports.BlockBaseProps = exports.AnchorProps = exports.withTheme = exports.MenuProps = exports.ButtonProps = exports.authorItem = exports.FileLinkProps = exports.LinkProps = exports.BackgroundProps = exports.DataLensProps = exports.DataLensObjectProps = exports.JustifyProps = exports.ThemeProps = exports.VideoProps = exports.PlayIconProps = exports.LoopProps = exports.ChildrenCardsProps = exports.ChildrenProps = exports.AnimatableProps = exports.sliderSizesObject = exports.containerSizesObject = exports.BaseProps = exports.contentThemes = exports.sizeNumber = exports.dividerEnum = exports.fileLinkTypes = exports.videoControlsTypes = exports.playIconThemes = exports.playIconTypes = exports.videoTypes = exports.contentTextWidth = exports.contentSizes = exports.sliderSizesArray = exports.containerSizesArray = exports.textSize = exports.mediaDirection = void 0;
3
+ exports.MediaProps = exports.ButtonBlock = exports.TitleProps = exports.BlockBaseProps = exports.AnchorProps = exports.withTheme = exports.MenuProps = exports.ButtonProps = exports.authorItem = exports.FileLinkProps = exports.LinkProps = exports.BackgroundProps = exports.DataLensProps = exports.DataLensObjectProps = exports.ImageProps = exports.ImageObjectProps = exports.JustifyProps = exports.ThemeProps = exports.VideoProps = exports.PlayIconProps = exports.LoopProps = exports.ChildrenCardsProps = exports.ChildrenProps = exports.AnimatableProps = exports.sliderSizesObject = exports.containerSizesObject = exports.BaseProps = exports.urlPattern = exports.contentThemes = exports.sizeNumber = exports.dividerEnum = exports.fileLinkTypes = exports.videoControlsTypes = exports.playIconThemes = exports.playIconTypes = exports.videoTypes = exports.contentTextWidth = exports.contentSizes = exports.sliderSizesArray = exports.containerSizesArray = exports.textSize = exports.mediaDirection = void 0;
4
+ const utils_1 = require("./utils");
4
5
  const pixel_1 = require("./pixel");
5
6
  const models_1 = require("../../models");
6
- const schema_1 = require("../../components/Image/schema");
7
7
  exports.mediaDirection = ['media-content', 'content-media'];
8
8
  exports.textSize = ['s', 'm', 'l'];
9
9
  exports.containerSizesArray = ['sm', 'md', 'lg', 'xl', 'all'];
@@ -18,6 +18,7 @@ exports.fileLinkTypes = ['vertical', 'horizontal'];
18
18
  exports.dividerEnum = { enum: [0, 'xxs', 'xs', 's', 'm', 'l', 'xl', 'xxl', 'xxxl'] };
19
19
  exports.sizeNumber = { type: 'number', maximum: 12, minimum: 1 };
20
20
  exports.contentThemes = ['default', 'dark', 'light'];
21
+ exports.urlPattern = '^((http[s]?|ftp):\\/)?\\/?([^:\\/\\s]+)((\\/\\w+)*\\/)([\\w\\-\\.]+[^#?\\s]+)(.*)?(#[\\w\\-]+)?$';
21
22
  exports.BaseProps = {
22
23
  type: {},
23
24
  when: {},
@@ -129,6 +130,32 @@ exports.JustifyProps = {
129
130
  type: 'string',
130
131
  enum: ['start', 'center', 'end'],
131
132
  };
133
+ exports.ImageObjectProps = {
134
+ type: 'object',
135
+ additionalProperties: false,
136
+ required: ['src'],
137
+ properties: {
138
+ src: {
139
+ type: 'string',
140
+ pattern: exports.urlPattern,
141
+ },
142
+ alt: {
143
+ type: 'string',
144
+ },
145
+ disableCompress: {
146
+ type: 'boolean',
147
+ },
148
+ },
149
+ };
150
+ exports.ImageProps = {
151
+ oneOf: [
152
+ {
153
+ type: 'string',
154
+ pattern: exports.urlPattern,
155
+ },
156
+ (0, utils_1.filteredItem)(Object.assign({}, exports.ImageObjectProps)),
157
+ ],
158
+ };
132
159
  exports.DataLensObjectProps = {
133
160
  type: 'object',
134
161
  additionalProperties: false,
@@ -145,7 +172,7 @@ exports.DataLensProps = {
145
172
  };
146
173
  exports.BackgroundProps = {
147
174
  additionalProperties: false,
148
- properties: Object.assign(Object.assign({}, exports.AnimatableProps), { image: schema_1.ImageProps, color: {
175
+ properties: Object.assign(Object.assign({}, exports.AnimatableProps), { image: exports.ImageProps, color: {
149
176
  type: 'string',
150
177
  }, video: exports.VideoProps, height: {
151
178
  type: 'number',
@@ -214,7 +241,7 @@ exports.authorItem = {
214
241
  },
215
242
  avatar: {
216
243
  type: 'string',
217
- pattern: schema_1.urlPattern,
244
+ pattern: exports.urlPattern,
218
245
  },
219
246
  description: {
220
247
  type: 'string',
@@ -414,7 +441,7 @@ exports.MediaProps = {
414
441
  type: 'string',
415
442
  },
416
443
  image: {
417
- anyOf: [schema_1.ImageProps, { type: 'array', items: schema_1.ImageProps }],
444
+ anyOf: [exports.ImageProps, { type: 'array', items: exports.ImageProps }],
418
445
  },
419
446
  video: exports.VideoProps,
420
447
  youtube: {
@@ -5,7 +5,6 @@ const tslib_1 = require("tslib");
5
5
  const common_1 = require("../../schema/validators/common");
6
6
  const schema_1 = require("../../components/CardBase/schema");
7
7
  const schema_2 = require("../Content/schema");
8
- const schema_3 = require("../../components/Image/schema");
9
8
  const lodash_1 = (0, tslib_1.__importDefault)(require("lodash"));
10
9
  const BackgroundCardContentProps = lodash_1.default.omit(schema_2.ContentBase, ['size']);
11
10
  exports.BackgroundCard = {
@@ -14,7 +13,7 @@ exports.BackgroundCard = {
14
13
  required: ['title', 'text'],
15
14
  properties: Object.assign(Object.assign(Object.assign(Object.assign({}, common_1.BaseProps), schema_1.CardBase), BackgroundCardContentProps), { url: {
16
15
  type: 'string',
17
- }, background: (0, common_1.withTheme)(schema_3.ImageObjectProps), backgroundColor: {
16
+ }, background: (0, common_1.withTheme)(common_1.ImageObjectProps), backgroundColor: {
18
17
  type: 'string',
19
18
  }, paddingBottom: {
20
19
  type: 'string',
@@ -13,7 +13,7 @@ const BasicCard = (props) => {
13
13
  const iconProps = icon && (0, utils_2.getMediaImage)(icon);
14
14
  return (react_1.default.createElement(CardBase_1.default, { className: b(), url: url, border: border },
15
15
  react_1.default.createElement(CardBase_1.default.Content, null,
16
- iconProps && react_1.default.createElement(Image_1.default, Object.assign({}, iconProps, { className: b('icon') })),
16
+ iconProps && (react_1.default.createElement(Image_1.default, { src: iconProps.src, alt: iconProps.alt, className: b('icon'), disableCompress: iconProps.disableCompress })),
17
17
  react_1.default.createElement(__1.Content, { title: title, text: text, additionalInfo: additionalInfo, links: links, buttons: buttons, colSizes: { all: 12, md: 12 }, size: "s" }))));
18
18
  };
19
19
  exports.default = BasicCard;
@@ -6,7 +6,6 @@ const lodash_1 = (0, tslib_1.__importDefault)(require("lodash"));
6
6
  const common_1 = require("../../schema/validators/common");
7
7
  const schema_1 = require("../../components/CardBase/schema");
8
8
  const schema_2 = require("../Content/schema");
9
- const schema_3 = require("../../components/Image/schema");
10
9
  const BasicCardContentProps = lodash_1.default.omit(schema_2.ContentBase, ['size', 'theme']);
11
10
  exports.BasicCard = {
12
11
  'basic-card': {
@@ -14,6 +13,6 @@ exports.BasicCard = {
14
13
  required: ['url'],
15
14
  properties: Object.assign(Object.assign(Object.assign(Object.assign({}, common_1.BaseProps), schema_1.CardBase), BasicCardContentProps), { url: {
16
15
  type: 'string',
17
- }, icon: schema_3.ImageProps }),
16
+ }, icon: common_1.ImageProps }),
18
17
  },
19
18
  };
@@ -22,10 +22,11 @@ unpredictable css rules order in build */
22
22
  color: var(--yc-color-text-primary);
23
23
  }
24
24
 
25
- .pc-content__button {
25
+ .pc-content__button.pc-content__button {
26
26
  margin-top: 0;
27
27
  margin-right: 12px;
28
28
  }
29
+
29
30
  .pc-content__links {
30
31
  display: flex;
31
32
  flex-direction: column;
@@ -9,7 +9,7 @@ const Partner = ({ text, logo, url, border }) => {
9
9
  const logoData = typeof logo === 'string' ? { src: logo } : logo;
10
10
  return (react_1.default.createElement(components_1.CardBase, { url: url, target: "_blank", className: b(), border: border },
11
11
  react_1.default.createElement(components_1.CardBase.Content, null,
12
- react_1.default.createElement(components_1.Image, Object.assign({ className: b('logo') }, logoData)),
12
+ react_1.default.createElement(components_1.Image, { className: b('logo'), src: logoData.src, alt: logoData.alt }),
13
13
  react_1.default.createElement(components_1.HTML, null, text))));
14
14
  };
15
15
  exports.default = Partner;
@@ -2,14 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PartnerBlock = void 0;
4
4
  const common_1 = require("../../schema/validators/common");
5
- const schema_1 = require("../../components/Image/schema");
6
5
  exports.PartnerBlock = {
7
6
  partner: {
8
7
  additionalProperties: false,
9
8
  required: ['text', 'logo', 'url'],
10
9
  properties: Object.assign(Object.assign({}, common_1.BaseProps), { text: {
11
10
  type: 'string',
12
- }, logo: schema_1.ImageProps, url: {
11
+ }, logo: common_1.ImageProps, url: {
13
12
  type: 'string',
14
13
  } }),
15
14
  },
@@ -7,13 +7,12 @@ const utils_1 = require("../../utils");
7
7
  const models_1 = require("../../models");
8
8
  const components_1 = require("../../components");
9
9
  const ThemeValueContext_1 = require("../../context/theme/ThemeValueContext");
10
- const utils_2 = require("../../components/Media/Image/utils");
11
10
  const b = (0, utils_1.block)('quote');
12
11
  const Quote = (props) => {
13
12
  const { theme: textTheme = 'light', color, image, border = 'shadow', text, logo, author, url, buttonText, } = props;
14
13
  const { themeValue: theme } = (0, react_1.useContext)(ThemeValueContext_1.ThemeValueContext);
15
14
  const imageThemed = (0, utils_1.getThemedValue)(image, theme);
16
- const imageData = (0, utils_2.getMediaImage)(imageThemed);
15
+ const imageData = typeof imageThemed === 'string' ? { src: imageThemed } : imageThemed;
17
16
  const renderFooter = Boolean(author || url) && (react_1.default.createElement("div", { className: b('author-wrapper') },
18
17
  author && (react_1.default.createElement(components_1.Author, { className: b('author', { theme: textTheme }), author: author, type: models_1.AuthorType.Line })),
19
18
  url && buttonText && (react_1.default.createElement(uikit_1.Button, { view: "outlined", size: "xl", href: url, className: b('link-button', { theme: textTheme }) }, buttonText))));
@@ -26,6 +25,6 @@ const Quote = (props) => {
26
25
  react_1.default.createElement(components_1.HTML, null, text)))),
27
26
  renderFooter),
28
27
  react_1.default.createElement("div", { className: b('image-wrapper') },
29
- react_1.default.createElement(components_1.Image, Object.assign({}, imageData, { className: b('image') })))));
28
+ react_1.default.createElement(components_1.Image, { src: imageData.src, alt: imageData.alt, className: b('image') }))));
30
29
  };
31
30
  exports.default = Quote;
@@ -2,21 +2,20 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Quote = void 0;
4
4
  const common_1 = require("../../schema/validators/common");
5
- const schema_1 = require("../../components/Image/schema");
6
5
  exports.Quote = {
7
6
  quote: {
8
7
  additionalProperties: false,
9
8
  required: ['text', 'image', 'logo'],
10
9
  properties: Object.assign(Object.assign({}, common_1.BaseProps), { text: {
11
10
  type: 'string',
12
- }, image: (0, common_1.withTheme)(schema_1.ImageProps), logo: {
11
+ }, image: (0, common_1.withTheme)(common_1.ImageProps), logo: {
13
12
  type: 'string',
14
- pattern: schema_1.urlPattern,
13
+ pattern: common_1.urlPattern,
15
14
  }, color: {
16
15
  type: 'string',
17
16
  }, url: {
18
17
  type: 'string',
19
- pattern: schema_1.urlPattern,
18
+ pattern: common_1.urlPattern,
20
19
  }, theme: common_1.ThemeProps, author: common_1.authorItem }),
21
20
  },
22
21
  };
@@ -8,8 +8,8 @@ const components_1 = require("../../components/");
8
8
  const utils_2 = require("../../components/Media/Image/utils");
9
9
  const b = (0, utils_1.block)('tutorial-card');
10
10
  function iconElement(icon, title) {
11
- const image = (0, utils_2.getMediaImage)(icon !== null && icon !== void 0 ? icon : {});
12
- return react_1.default.createElement(components_1.Image, Object.assign({}, image, { alt: title, className: b('icon') }));
11
+ const { src, alt = title, disableCompress } = (0, utils_2.getMediaImage)(icon !== null && icon !== void 0 ? icon : {});
12
+ return react_1.default.createElement(components_1.Image, { src: src, alt: alt, className: b('icon'), disableCompress: disableCompress });
13
13
  }
14
14
  const TutorialCard = (props) => {
15
15
  const { url, title, text, border, icon } = props;
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TutorialCard = void 0;
4
4
  const common_1 = require("../../schema/validators/common");
5
- const schema_1 = require("../../components/Image/schema");
6
5
  exports.TutorialCard = {
7
6
  'tutorial-card': {
8
7
  additionalProperties: false,
@@ -13,6 +12,6 @@ exports.TutorialCard = {
13
12
  type: 'string',
14
13
  }, text: {
15
14
  type: 'string',
16
- }, icon: schema_1.ImageProps }),
15
+ }, icon: common_1.ImageProps }),
17
16
  },
18
17
  };
@@ -1,17 +1,21 @@
1
1
  import React, { useContext } from 'react';
2
2
  import { block, getThemedValue } from '../../utils';
3
3
  import AnimateBlock from '../../components/AnimateBlock/AnimateBlock';
4
+ import { BREAKPOINTS } from '../../constants';
4
5
  import { ThemeValueContext } from '../../context/theme/ThemeValueContext';
5
- import { Image } from '../../components';
6
6
  import './Companies.css';
7
7
  const b = block('companies-block');
8
8
  export const CompaniesBlock = ({ title, images, animated }) => {
9
9
  const { themeValue: theme } = useContext(ThemeValueContext);
10
10
  const themedImages = getThemedValue(images, theme) || {};
11
+ const { desktop, mobile, tablet, alt } = themedImages;
11
12
  return (React.createElement(AnimateBlock, { className: b(), offset: 150, animate: animated },
12
13
  React.createElement("div", { className: b('content') },
13
14
  React.createElement("h2", { className: b('title') }, title),
14
15
  React.createElement("div", { className: b('images') },
15
- React.createElement(Image, Object.assign({}, themedImages))))));
16
+ React.createElement("picture", null,
17
+ React.createElement("source", { srcSet: desktop, media: `(min-width: ${BREAKPOINTS.md}px)` }),
18
+ React.createElement("source", { srcSet: tablet, media: `(min-width: ${BREAKPOINTS.sm}px)` }),
19
+ React.createElement("img", { className: b('image'), srcSet: mobile, alt: alt }))))));
16
20
  };
17
21
  export default CompaniesBlock;
@@ -1,7 +1,6 @@
1
1
  import { ContentBlock } from '../../sub-blocks/Content/schema';
2
2
  import { filteredArray } from '../../schema/validators/utils';
3
- import { contentSizes, contentTextWidth, contentThemes, FileLinkProps, BlockBaseProps, } from '../../schema/validators/common';
4
- import { ImageObjectProps } from '../../components/Image/schema';
3
+ import { contentSizes, contentTextWidth, contentThemes, FileLinkProps, ImageObjectProps, BlockBaseProps, } from '../../schema/validators/common';
5
4
  export const ContentLayoutBlock = {
6
5
  'content-layout-block': {
7
6
  additionalProperties: false,
@@ -9,7 +9,6 @@ unpredictable css rules order in build */
9
9
  margin: 16px 0;
10
10
  }
11
11
  .pc-header-block_full-width {
12
- --pc-border-radius: 0;
13
12
  padding: 16px 0;
14
13
  margin: 0 0 16px;
15
14
  }
@@ -87,10 +86,11 @@ unpredictable css rules order in build */
87
86
  .pc-header-block__buttons {
88
87
  margin-top: 16px;
89
88
  }
90
- .pc-header-block__button {
89
+ .pc-header-block__button.pc-header-block__button {
91
90
  margin-top: 16px;
92
91
  margin-right: 16px;
93
92
  }
93
+
94
94
  .pc-header-block__media {
95
95
  position: absolute;
96
96
  display: none;
@@ -150,7 +150,11 @@ unpredictable css rules order in build */
150
150
  width: 100%;
151
151
  object-fit: cover;
152
152
  }
153
+ .pc-header-block__background_full-width-media {
154
+ --pc-border-radius: 0;
155
+ }
153
156
  .pc-header-block__background_full-width {
157
+ --pc-border-radius: 0;
154
158
  left: 0;
155
159
  transform: none;
156
160
  max-width: none;
@@ -186,6 +190,9 @@ unpredictable css rules order in build */
186
190
  .pc-header-block_has-media .pc-header-block__content {
187
191
  padding-top: 48px;
188
192
  }
193
+ .pc-header-block_has-background .pc-header-block__background-img {
194
+ display: none;
195
+ }
189
196
  .pc-header-block .pc-header-block__content_vertical-offset_s, .pc-header-block .pc-header-block__content_vertical-offset_m, .pc-header-block .pc-header-block__content_vertical-offset_l, .pc-header-block .pc-header-block__content_vertical-offset_xl {
190
197
  padding: calc(96px - 16px) 0;
191
198
  }
@@ -1,18 +1,17 @@
1
1
  import React, { useContext } from 'react';
2
2
  import { block, getThemedValue } from '../../utils';
3
- import { Button, Media, BackgroundMedia, RouterLink, HTML } from '../../components';
3
+ import { headerHasMediaBackground } from '../../models/guards';
4
+ import { Button, Media, BackgroundMedia, BackgroundImage, RouterLink, HTML } from '../../components';
4
5
  import { Grid, Row, Col } from '../../grid';
5
6
  import { getImageSize, getTitleSizes, titleWithImageSizes } from './utils';
6
7
  import YFMWrapper from '../../components/YFMWrapper/YFMWrapper';
7
8
  import HeaderBreadcrumbs from '../../components/HeaderBreadcrumbs/HeaderBreadcrumbs';
8
9
  import { ThemeValueContext } from '../../context/theme/ThemeValueContext';
9
- import { getMediaImage } from '../../components/Media/Image/utils';
10
10
  import './Header.css';
11
11
  const b = block('header-block');
12
12
  const Background = ({ background }) => {
13
- const { url, image, fullWidthMedia } = background;
14
- const imageObject = url ? getMediaImage(url) : image;
15
- return (React.createElement(BackgroundMedia, Object.assign({}, background, { image: imageObject, animated: false, parallax: false, mediaClassName: b('background-media'), className: b('background', { media: true, 'full-width-media': fullWidthMedia }) })));
13
+ const { url, color, disableCompress, fullWidth, fullWidthMedia } = background;
14
+ return headerHasMediaBackground(background) ? (React.createElement(BackgroundMedia, Object.assign({}, background, { mediaClassName: b('background-media'), className: b('background', { media: true, 'full-width-media': fullWidthMedia }) }))) : (React.createElement(BackgroundImage, { src: url, className: b('background', { 'full-width-media': fullWidthMedia }), imageClassName: b('background-img'), style: { backgroundColor: fullWidth ? 'none' : color }, disableCompress: disableCompress }));
16
15
  };
17
16
  const FullWidthBackground = ({ background }) => (React.createElement("div", { className: b('background', { ['full-width']: true }), style: { backgroundColor: background === null || background === void 0 ? void 0 : background.color } }));
18
17
  export const HeaderBlock = (props) => {
@@ -28,8 +27,12 @@ export const HeaderBlock = (props) => {
28
27
  const backgroundThemed = background && getThemedValue(background, theme);
29
28
  const imageThemed = image && getThemedValue(image, theme);
30
29
  const videoThemed = video && getThemedValue(video, theme);
31
- const fullWidth = backgroundThemed === null || backgroundThemed === void 0 ? void 0 : backgroundThemed.fullWidth;
32
- return (React.createElement("header", { className: b({ ['has-media']: hasMedia, ['full-width']: fullWidth }, className) },
30
+ const fullWidth = Boolean(backgroundThemed === null || backgroundThemed === void 0 ? void 0 : backgroundThemed.fullWidth);
31
+ return (React.createElement("header", { className: b({
32
+ ['has-media']: hasMedia,
33
+ ['has-background']: Boolean(background),
34
+ ['full-width']: fullWidth,
35
+ }, className) },
33
36
  backgroundThemed && fullWidth && React.createElement(FullWidthBackground, { background: backgroundThemed }),
34
37
  backgroundThemed && React.createElement(Background, { background: backgroundThemed }),
35
38
  React.createElement(Grid, { containerClass: b('container-fluid') },