@gravity-ui/page-constructor 2.18.0 → 3.0.0-alpha.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 (197) hide show
  1. package/build/cjs/blocks/index.d.ts +0 -4
  2. package/build/cjs/blocks/index.js +1 -9
  3. package/build/cjs/blocks/validators.d.ts +0 -4
  4. package/build/cjs/blocks/validators.js +0 -4
  5. package/build/cjs/components/index.d.ts +0 -1
  6. package/build/cjs/components/index.js +1 -3
  7. package/build/cjs/constructor-items.d.ts +0 -16
  8. package/build/cjs/constructor-items.js +0 -16
  9. package/build/cjs/hooks/index.d.ts +1 -1
  10. package/build/cjs/hooks/index.js +3 -3
  11. package/build/cjs/models/constructor-items/blocks.d.ts +2 -50
  12. package/build/cjs/models/constructor-items/blocks.js +0 -4
  13. package/build/cjs/models/constructor-items/common.d.ts +0 -14
  14. package/build/cjs/models/constructor-items/common.js +1 -6
  15. package/build/cjs/models/constructor-items/sub-blocks.d.ts +5 -46
  16. package/build/cjs/models/constructor-items/sub-blocks.js +2 -11
  17. package/build/cjs/schema/index.js +2 -8
  18. package/build/cjs/schema/validators/blocks.d.ts +0 -4
  19. package/build/cjs/schema/validators/blocks.js +0 -4
  20. package/build/cjs/schema/validators/sub-blocks.d.ts +0 -3
  21. package/build/cjs/schema/validators/sub-blocks.js +0 -3
  22. package/build/cjs/sub-blocks/index.d.ts +0 -3
  23. package/build/cjs/sub-blocks/index.js +1 -7
  24. package/build/cjs/text-transform/{blocks.d.ts → common.d.ts} +1 -4
  25. package/build/cjs/text-transform/common.js +31 -0
  26. package/build/cjs/text-transform/config.d.ts +28 -0
  27. package/build/cjs/text-transform/config.js +291 -0
  28. package/build/cjs/text-transform/index.d.ts +3 -1
  29. package/build/cjs/text-transform/index.js +3 -1
  30. package/build/cjs/text-transform/transformers.d.ts +16 -0
  31. package/build/cjs/text-transform/transformers.js +61 -0
  32. package/build/cjs/utils/index.d.ts +0 -1
  33. package/build/cjs/utils/index.js +0 -1
  34. package/build/esm/blocks/index.d.ts +0 -4
  35. package/build/esm/blocks/index.js +0 -4
  36. package/build/esm/blocks/validators.d.ts +0 -4
  37. package/build/esm/blocks/validators.js +0 -4
  38. package/build/esm/components/index.d.ts +0 -1
  39. package/build/esm/components/index.js +0 -1
  40. package/build/esm/constructor-items.d.ts +0 -16
  41. package/build/esm/constructor-items.js +2 -18
  42. package/build/esm/hooks/index.d.ts +1 -1
  43. package/build/esm/hooks/index.js +1 -1
  44. package/build/esm/models/constructor-items/blocks.d.ts +2 -50
  45. package/build/esm/models/constructor-items/blocks.js +0 -4
  46. package/build/esm/models/constructor-items/common.d.ts +0 -14
  47. package/build/esm/models/constructor-items/common.js +0 -5
  48. package/build/esm/models/constructor-items/sub-blocks.d.ts +5 -46
  49. package/build/esm/models/constructor-items/sub-blocks.js +2 -11
  50. package/build/esm/schema/index.js +4 -10
  51. package/build/esm/schema/validators/blocks.d.ts +0 -4
  52. package/build/esm/schema/validators/blocks.js +0 -4
  53. package/build/esm/schema/validators/sub-blocks.d.ts +0 -3
  54. package/build/esm/schema/validators/sub-blocks.js +0 -3
  55. package/build/esm/sub-blocks/index.d.ts +0 -3
  56. package/build/esm/sub-blocks/index.js +0 -3
  57. package/build/esm/text-transform/{blocks.d.ts → common.d.ts} +1 -4
  58. package/build/esm/text-transform/common.js +25 -0
  59. package/build/esm/text-transform/config.d.ts +28 -0
  60. package/build/esm/text-transform/{blocks.js → config.js} +15 -123
  61. package/build/esm/text-transform/index.d.ts +3 -1
  62. package/build/esm/text-transform/index.js +3 -1
  63. package/build/esm/text-transform/transformers.d.ts +16 -0
  64. package/build/esm/text-transform/transformers.js +56 -0
  65. package/build/esm/utils/index.d.ts +0 -1
  66. package/build/esm/utils/index.js +0 -1
  67. package/package.json +4 -1
  68. package/server/models/constructor-items/blocks.d.ts +2 -50
  69. package/server/models/constructor-items/blocks.js +0 -4
  70. package/server/models/constructor-items/common.d.ts +0 -14
  71. package/server/models/constructor-items/common.js +1 -6
  72. package/server/models/constructor-items/sub-blocks.d.ts +5 -46
  73. package/server/models/constructor-items/sub-blocks.js +2 -11
  74. package/server/text-transform/{blocks.d.ts → common.d.ts} +1 -4
  75. package/server/text-transform/common.js +31 -0
  76. package/server/text-transform/config.d.ts +28 -0
  77. package/server/text-transform/config.js +301 -0
  78. package/server/text-transform/index.d.ts +3 -1
  79. package/server/text-transform/index.js +3 -1
  80. package/server/text-transform/transformers.d.ts +16 -0
  81. package/server/text-transform/transformers.js +63 -0
  82. package/server/utils/index.d.ts +0 -1
  83. package/server/utils/index.js +0 -1
  84. package/build/cjs/blocks/LinkTable/LinkTable.css +0 -3
  85. package/build/cjs/blocks/LinkTable/LinkTable.d.ts +0 -3
  86. package/build/cjs/blocks/LinkTable/LinkTable.js +0 -22
  87. package/build/cjs/blocks/LinkTable/schema.d.ts +0 -77
  88. package/build/cjs/blocks/LinkTable/schema.js +0 -15
  89. package/build/cjs/blocks/Preview/MediaContent/MediaContent.css +0 -50
  90. package/build/cjs/blocks/Preview/MediaContent/MediaContent.d.ts +0 -13
  91. package/build/cjs/blocks/Preview/MediaContent/MediaContent.js +0 -49
  92. package/build/cjs/blocks/Preview/MediaContent/PreviewContent.css +0 -106
  93. package/build/cjs/blocks/Preview/MediaContent/PreviewContent.d.ts +0 -11
  94. package/build/cjs/blocks/Preview/MediaContent/PreviewContent.js +0 -17
  95. package/build/cjs/blocks/Preview/MediaContent/PreviewMedia.css +0 -54
  96. package/build/cjs/blocks/Preview/MediaContent/PreviewMedia.d.ts +0 -9
  97. package/build/cjs/blocks/Preview/MediaContent/PreviewMedia.js +0 -13
  98. package/build/cjs/blocks/Preview/Preview.css +0 -50
  99. package/build/cjs/blocks/Preview/Preview.d.ts +0 -3
  100. package/build/cjs/blocks/Preview/Preview.js +0 -130
  101. package/build/cjs/blocks/Preview/schema.d.ts +0 -40
  102. package/build/cjs/blocks/Preview/schema.js +0 -53
  103. package/build/cjs/blocks/Security/Security.css +0 -142
  104. package/build/cjs/blocks/Security/Security.d.ts +0 -3
  105. package/build/cjs/blocks/Security/Security.js +0 -29
  106. package/build/cjs/blocks/Security/schema.d.ts +0 -170
  107. package/build/cjs/blocks/Security/schema.js +0 -32
  108. package/build/cjs/blocks/Simple/Simple.css +0 -22
  109. package/build/cjs/blocks/Simple/Simple.d.ts +0 -3
  110. package/build/cjs/blocks/Simple/Simple.js +0 -22
  111. package/build/cjs/blocks/Simple/schema.d.ts +0 -68
  112. package/build/cjs/blocks/Simple/schema.js +0 -14
  113. package/build/cjs/components/HeightCalculator/HeightCalculator.css +0 -9
  114. package/build/cjs/components/HeightCalculator/HeightCalculator.d.ts +0 -10
  115. package/build/cjs/components/HeightCalculator/HeightCalculator.js +0 -44
  116. package/build/cjs/context/breakpointContext/breakpointContext.d.ts +0 -2
  117. package/build/cjs/context/breakpointContext/breakpointContext.js +0 -7
  118. package/build/cjs/context/breakpointContext/index.d.ts +0 -1
  119. package/build/cjs/context/breakpointContext/index.js +0 -4
  120. package/build/cjs/hooks/useIntersection.d.ts +0 -1
  121. package/build/cjs/hooks/useIntersection.js +0 -21
  122. package/build/cjs/sub-blocks/CardWithImage/CardWithImage.css +0 -19
  123. package/build/cjs/sub-blocks/CardWithImage/CardWithImage.d.ts +0 -3
  124. package/build/cjs/sub-blocks/CardWithImage/CardWithImage.js +0 -16
  125. package/build/cjs/sub-blocks/CardWithImage/schema.d.ts +0 -154
  126. package/build/cjs/sub-blocks/CardWithImage/schema.js +0 -46
  127. package/build/cjs/sub-blocks/Partner/Partner.css +0 -8
  128. package/build/cjs/sub-blocks/Partner/Partner.d.ts +0 -3
  129. package/build/cjs/sub-blocks/Partner/Partner.js +0 -15
  130. package/build/cjs/sub-blocks/Partner/schema.d.ts +0 -30
  131. package/build/cjs/sub-blocks/Partner/schema.js +0 -17
  132. package/build/cjs/sub-blocks/TutorialCard/TutorialCard.css +0 -20
  133. package/build/cjs/sub-blocks/TutorialCard/TutorialCard.d.ts +0 -3
  134. package/build/cjs/sub-blocks/TutorialCard/TutorialCard.js +0 -23
  135. package/build/cjs/sub-blocks/TutorialCard/schema.d.ts +0 -34
  136. package/build/cjs/sub-blocks/TutorialCard/schema.js +0 -20
  137. package/build/cjs/text-transform/blocks.js +0 -404
  138. package/build/cjs/utils/scroll.d.ts +0 -15
  139. package/build/cjs/utils/scroll.js +0 -35
  140. package/build/esm/blocks/LinkTable/LinkTable.css +0 -3
  141. package/build/esm/blocks/LinkTable/LinkTable.d.ts +0 -4
  142. package/build/esm/blocks/LinkTable/LinkTable.js +0 -21
  143. package/build/esm/blocks/LinkTable/schema.d.ts +0 -77
  144. package/build/esm/blocks/LinkTable/schema.js +0 -12
  145. package/build/esm/blocks/Preview/MediaContent/MediaContent.css +0 -50
  146. package/build/esm/blocks/Preview/MediaContent/MediaContent.d.ts +0 -14
  147. package/build/esm/blocks/Preview/MediaContent/MediaContent.js +0 -47
  148. package/build/esm/blocks/Preview/MediaContent/PreviewContent.css +0 -106
  149. package/build/esm/blocks/Preview/MediaContent/PreviewContent.d.ts +0 -12
  150. package/build/esm/blocks/Preview/MediaContent/PreviewContent.js +0 -15
  151. package/build/esm/blocks/Preview/MediaContent/PreviewMedia.css +0 -54
  152. package/build/esm/blocks/Preview/MediaContent/PreviewMedia.d.ts +0 -10
  153. package/build/esm/blocks/Preview/MediaContent/PreviewMedia.js +0 -11
  154. package/build/esm/blocks/Preview/Preview.css +0 -50
  155. package/build/esm/blocks/Preview/Preview.d.ts +0 -4
  156. package/build/esm/blocks/Preview/Preview.js +0 -126
  157. package/build/esm/blocks/Preview/schema.d.ts +0 -40
  158. package/build/esm/blocks/Preview/schema.js +0 -50
  159. package/build/esm/blocks/Security/Security.css +0 -142
  160. package/build/esm/blocks/Security/Security.d.ts +0 -4
  161. package/build/esm/blocks/Security/Security.js +0 -25
  162. package/build/esm/blocks/Security/schema.d.ts +0 -170
  163. package/build/esm/blocks/Security/schema.js +0 -28
  164. package/build/esm/blocks/Simple/Simple.css +0 -22
  165. package/build/esm/blocks/Simple/Simple.d.ts +0 -4
  166. package/build/esm/blocks/Simple/Simple.js +0 -18
  167. package/build/esm/blocks/Simple/schema.d.ts +0 -68
  168. package/build/esm/blocks/Simple/schema.js +0 -11
  169. package/build/esm/components/HeightCalculator/HeightCalculator.css +0 -9
  170. package/build/esm/components/HeightCalculator/HeightCalculator.d.ts +0 -11
  171. package/build/esm/components/HeightCalculator/HeightCalculator.js +0 -42
  172. package/build/esm/context/breakpointContext/breakpointContext.d.ts +0 -2
  173. package/build/esm/context/breakpointContext/breakpointContext.js +0 -3
  174. package/build/esm/context/breakpointContext/index.d.ts +0 -1
  175. package/build/esm/context/breakpointContext/index.js +0 -1
  176. package/build/esm/hooks/useIntersection.d.ts +0 -1
  177. package/build/esm/hooks/useIntersection.js +0 -17
  178. package/build/esm/sub-blocks/CardWithImage/CardWithImage.css +0 -19
  179. package/build/esm/sub-blocks/CardWithImage/CardWithImage.d.ts +0 -4
  180. package/build/esm/sub-blocks/CardWithImage/CardWithImage.js +0 -14
  181. package/build/esm/sub-blocks/CardWithImage/schema.d.ts +0 -154
  182. package/build/esm/sub-blocks/CardWithImage/schema.js +0 -43
  183. package/build/esm/sub-blocks/Partner/Partner.css +0 -8
  184. package/build/esm/sub-blocks/Partner/Partner.d.ts +0 -4
  185. package/build/esm/sub-blocks/Partner/Partner.js +0 -13
  186. package/build/esm/sub-blocks/Partner/schema.d.ts +0 -30
  187. package/build/esm/sub-blocks/Partner/schema.js +0 -14
  188. package/build/esm/sub-blocks/TutorialCard/TutorialCard.css +0 -20
  189. package/build/esm/sub-blocks/TutorialCard/TutorialCard.d.ts +0 -4
  190. package/build/esm/sub-blocks/TutorialCard/TutorialCard.js +0 -21
  191. package/build/esm/sub-blocks/TutorialCard/schema.d.ts +0 -34
  192. package/build/esm/sub-blocks/TutorialCard/schema.js +0 -17
  193. package/build/esm/utils/scroll.d.ts +0 -15
  194. package/build/esm/utils/scroll.js +0 -31
  195. package/server/text-transform/blocks.js +0 -417
  196. package/server/utils/scroll.d.ts +0 -15
  197. package/server/utils/scroll.js +0 -35
@@ -1,77 +0,0 @@
1
- export declare const LinkTableBlock: {
2
- 'link-table-block': {
3
- additionalProperties: boolean;
4
- required: string[];
5
- properties: {
6
- items: {
7
- type: string;
8
- items: {
9
- type: string;
10
- items: {
11
- type: string;
12
- properties: {
13
- when: {
14
- type: string;
15
- };
16
- };
17
- };
18
- };
19
- };
20
- title: {
21
- oneOf: ({
22
- type: string;
23
- additionalProperties: boolean;
24
- required: string[];
25
- properties: {
26
- text: {
27
- type: string;
28
- contentType: string;
29
- };
30
- textSize: {
31
- type: string;
32
- enum: string[];
33
- };
34
- url: {
35
- type: string;
36
- };
37
- resetMargin: {
38
- type: string;
39
- };
40
- };
41
- } | {
42
- type: string;
43
- })[];
44
- };
45
- description: {
46
- type: string;
47
- contentType: string;
48
- };
49
- anchor: {
50
- type: string;
51
- additionalProperties: boolean;
52
- required: string[];
53
- properties: {
54
- text: {
55
- type: string;
56
- contentType: string;
57
- };
58
- url: {
59
- type: string;
60
- };
61
- };
62
- };
63
- visible: {
64
- type: string;
65
- enum: string[];
66
- };
67
- resetPaddings: {
68
- type: string;
69
- };
70
- context: {
71
- type: string;
72
- };
73
- type: {};
74
- when: {};
75
- };
76
- };
77
- };
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LinkTableBlock = void 0;
4
- const common_1 = require("../../schema/validators/common");
5
- const utils_1 = require("../../schema/validators/utils");
6
- exports.LinkTableBlock = {
7
- 'link-table-block': {
8
- additionalProperties: false,
9
- required: ['items'],
10
- properties: Object.assign(Object.assign(Object.assign({}, common_1.BlockBaseProps), common_1.BlockHeaderProps), { items: {
11
- type: 'array',
12
- items: (0, utils_1.filteredArray)(common_1.LinkProps),
13
- } }),
14
- },
15
- };
@@ -1,50 +0,0 @@
1
- /* use this for style redefinitions to awoid problems with
2
- unpredictable css rules order in build */
3
- .pc-preview-media-content-block__header {
4
- margin-bottom: 24px;
5
- }
6
- .pc-preview-media-content-block__menu {
7
- padding: 0;
8
- }
9
- .pc-preview-media-content-block__title {
10
- font-size: var(--yc-text-display-1-font-size);
11
- line-height: var(--yc-text-display-1-line-height);
12
- font-weight: 500;
13
- position: relative;
14
- }
15
- .pc-preview-media-content-block__description {
16
- font-size: var(--yc-text-body-2-font-size);
17
- line-height: var(--yc-text-body-2-line-height);
18
- margin-top: 12px;
19
- position: relative;
20
- }
21
- .pc-preview-media-content-block__content, .pc-preview-media-content-block__media {
22
- padding: 0;
23
- }
24
- @media (max-width: 769px) {
25
- .pc-preview-media-content-block__menu.col {
26
- overflow-y: auto;
27
- margin-bottom: 16px;
28
- padding: 0;
29
- }
30
- .pc-preview-media-content-block__content-wrapper {
31
- width: fit-content;
32
- display: flex;
33
- }
34
- .pc-preview-media-content-block__content-wrapper div.preview-content-block__content-wrapper:first-child div.preview-content-block__content_active {
35
- margin-left: 0;
36
- }
37
- .pc-preview-media-content-block__content-wrapper div.preview-content-block__content-wrapper:last-child div.preview-content-block__content_active {
38
- margin-right: 0;
39
- }
40
- }
41
- @media (min-width: 577px) and (max-width: 769px) {
42
- .pc-preview-media-content-block__header, .pc-preview-media-content-block__content-wrapper {
43
- padding: 0 32px;
44
- }
45
- }
46
- @media (max-width: 577px) {
47
- .pc-preview-media-content-block__header, .pc-preview-media-content-block__content-wrapper {
48
- padding: 0 20px;
49
- }
50
- }
@@ -1,13 +0,0 @@
1
- import React from 'react';
2
- import { PreviewItemProps, PreviewRatioMediaContent, Refable } from '../../../models';
3
- interface MediaContentProps extends Refable<HTMLDivElement> {
4
- items: PreviewItemProps[];
5
- title: string;
6
- description?: string;
7
- ratioMediaContent?: PreviewRatioMediaContent;
8
- switching: boolean;
9
- isActiveBlock: (id: number, isMediaBlock?: boolean) => boolean;
10
- showMediaContent: (id: number) => void;
11
- }
12
- declare const MediaContent: React.ForwardRefExoticComponent<Pick<MediaContentProps, "title" | "description" | "items" | "ratioMediaContent" | "switching" | "isActiveBlock" | "showMediaContent"> & React.RefAttributes<HTMLDivElement>>;
13
- export default MediaContent;
@@ -1,49 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- const react_1 = tslib_1.__importStar(require("react"));
5
- const components_1 = require("../../../components/");
6
- const ThemeValueContext_1 = require("../../../context/theme/ThemeValueContext");
7
- const grid_1 = require("../../../grid");
8
- const utils_1 = require("../../../utils");
9
- const PreviewContent_1 = tslib_1.__importDefault(require("./PreviewContent"));
10
- const PreviewMedia_1 = tslib_1.__importDefault(require("./PreviewMedia"));
11
- const b = (0, utils_1.block)('preview-media-content-block');
12
- const MediaContent = (0, react_1.forwardRef)((props, ref) => {
13
- const { items, title, description = '', switching, ratioMediaContent = '1-1', isActiveBlock, showMediaContent, } = props;
14
- const { themeValue: theme } = (0, react_1.useContext)(ThemeValueContext_1.ThemeValueContext);
15
- const [mediaSizes, setMediaSizes] = (0, react_1.useState)({ [grid_1.GridColumnSize.All]: 12 });
16
- const [contentSizes, setContentSizes] = (0, react_1.useState)({ [grid_1.GridColumnSize.All]: 12 });
17
- (0, react_1.useEffect)(() => {
18
- const [mediaSize, contentSize] = ratioMediaContent.split('-');
19
- const blockSize = 12 / (Number(mediaSize) + Number(contentSize));
20
- const updatedMediaSizes = Object.assign(Object.assign({}, mediaSizes), { [grid_1.GridColumnSize.Md]: blockSize * Number(mediaSize) });
21
- setMediaSizes(updatedMediaSizes);
22
- const updatedContentSizes = Object.assign(Object.assign({}, contentSizes), { [grid_1.GridColumnSize.Md]: blockSize * Number(contentSize) });
23
- setContentSizes(updatedContentSizes);
24
- // eslint-disable-next-line react-hooks/exhaustive-deps
25
- }, [ratioMediaContent]);
26
- const contentComponents = [];
27
- const mediaComponents = [];
28
- items.forEach((item, id) => {
29
- const { content, media } = item;
30
- const isActive = isActiveBlock(id);
31
- const contentMods = { active: isActive };
32
- const mediaMods = { active: isActiveBlock(id, true) };
33
- const onClick = () => showMediaContent(id);
34
- contentComponents.push(react_1.default.createElement(PreviewContent_1.default, Object.assign({ key: id, id: id }, content, { switching: switching, onClick: onClick, mods: contentMods })));
35
- mediaComponents.push(react_1.default.createElement(PreviewMedia_1.default, { key: id, id: id, media: media && (0, utils_1.getThemedValue)(media, theme), play: isActive, mods: mediaMods }));
36
- });
37
- return (react_1.default.createElement(react_1.Fragment, null,
38
- react_1.default.createElement(grid_1.Col, { sizes: contentSizes, className: b('content') },
39
- react_1.default.createElement("div", { className: b('header') },
40
- react_1.default.createElement("h2", { className: b('title') },
41
- react_1.default.createElement(components_1.HTML, null, title)),
42
- description && (react_1.default.createElement("div", { className: b('description') },
43
- react_1.default.createElement(components_1.YFMWrapper, { content: description, modifiers: { constructor: true } })))),
44
- react_1.default.createElement(grid_1.Col, { ref: ref, className: b('menu') },
45
- react_1.default.createElement("div", { className: b('content-wrapper') }, contentComponents))),
46
- react_1.default.createElement(grid_1.Col, { sizes: mediaSizes, className: b('media') }, mediaComponents)));
47
- });
48
- MediaContent.displayName = 'MediaContent';
49
- exports.default = MediaContent;
@@ -1,106 +0,0 @@
1
- .pc-preview-content-block__title {
2
- margin: 0;
3
- }
4
-
5
- /* use this for style redefinitions to awoid problems with
6
- unpredictable css rules order in build */
7
- .pc-preview-content-block__content {
8
- height: 100%;
9
- display: block;
10
- cursor: pointer;
11
- border-radius: var(--pc-border-radius);
12
- overflow: hidden;
13
- position: relative;
14
- background: var(--yc-color-base-background);
15
- }
16
- .pc-preview-content-block__content > .pc-preview-content-block__description {
17
- overflow: hidden;
18
- }
19
- .pc-preview-content-block__loader-block {
20
- height: 100%;
21
- width: 0%;
22
- background: var(--yc-color-base-background);
23
- position: absolute;
24
- top: 0;
25
- left: 0;
26
- }
27
- .pc-preview-content-block__loader-block_auto {
28
- transition: background-color 1s ease, width 300ms linear;
29
- }
30
- .pc-preview-content-block__loader-block_active {
31
- background-color: var(--yc-color-promo-highlight-sky);
32
- width: 100%;
33
- }
34
- .pc-preview-content-block__loader-block_active.pc-preview-content-block__loader-block_auto {
35
- transition: background-color 1s ease, width 5s linear;
36
- }
37
- .pc-preview-content-block__title {
38
- font-size: var(--yc-text-header-1-font-size);
39
- line-height: var(--yc-text-header-1-line-height);
40
- color: var(--pc-text-header-color);
41
- font-weight: var(--yc-text-accent-font-weight);
42
- position: relative;
43
- }
44
- .pc-preview-content-block__description {
45
- font-size: var(--yc-text-body-2-font-size);
46
- line-height: var(--yc-text-body-2-line-height);
47
- position: relative;
48
- }
49
- @media (min-width: 769px) {
50
- .pc-preview-content-block__content {
51
- padding: 16px 24px;
52
- margin: 0;
53
- transition: background-color 0.5s ease-in, margin-top 300ms ease, margin-bottom 300ms ease;
54
- }
55
- .pc-preview-content-block__content > .pc-preview-content-block__description {
56
- height: 0px;
57
- transition: height 300ms ease, padding-top 300ms ease;
58
- }
59
- .pc-preview-content-block__content > .pc-preview-content-block__description > span {
60
- color: transparent;
61
- transition: color 300ms ease;
62
- }
63
- .pc-preview-content-block__content > .pc-preview-content-block__title:hover {
64
- color: var(--yc-color-text-link);
65
- }
66
- .pc-preview-content-block__content_active {
67
- padding: 24px;
68
- margin: 16px 0;
69
- background: var(--yc-color-promo-base-silver);
70
- transition: background-color 300ms ease-in, margin 300ms ease, padding 300ms ease;
71
- }
72
- .pc-preview-content-block__content_active > .pc-preview-content-block__description {
73
- padding-top: 12px;
74
- }
75
- .pc-preview-content-block__content_active > .pc-preview-content-block__description > span {
76
- color: var(--yc-color-text-primary);
77
- }
78
- .pc-preview-content-block__content_active > .pc-preview-content-block__title:hover {
79
- color: var(--yc-color-text-primary);
80
- }
81
- }
82
- @media (max-width: 769px) {
83
- .pc-preview-content-block__content {
84
- width: 275px;
85
- padding: 24px;
86
- padding-bottom: 32px;
87
- transition: background-color 0.5s ease-in;
88
- }
89
- .pc-preview-content-block__content_active {
90
- margin: 0 16px;
91
- background: var(--yc-color-promo-base-silver);
92
- transition: background-color 300ms ease-in;
93
- }
94
- .pc-preview-content-block__content > .pc-preview-content-block__description {
95
- padding-top: 12px;
96
- }
97
- .pc-preview-content-block__content > .pc-preview-content-block__description > span {
98
- color: var(--yc-color-text-primary);
99
- }
100
- .pc-preview-content-block__content > .pc-preview-content-block__description {
101
- display: block;
102
- }
103
- .pc-preview-content-block .preview-block__row_reverse__content {
104
- margin-left: 0;
105
- }
106
- }
@@ -1,11 +0,0 @@
1
- import { Modifiers } from '../../../models';
2
- interface PreviewContentProps {
3
- id: number;
4
- title: string;
5
- description?: string;
6
- switching: boolean;
7
- onClick: () => void;
8
- mods: Modifiers | null;
9
- }
10
- declare const PreviewContent: (props: PreviewContentProps) => JSX.Element;
11
- export default PreviewContent;
@@ -1,17 +0,0 @@
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 YFMWrapper_1 = tslib_1.__importDefault(require("../../../components/YFMWrapper/YFMWrapper"));
6
- const utils_1 = require("../../../utils");
7
- const b = (0, utils_1.block)('preview-content-block');
8
- const PreviewContent = (props) => {
9
- const { id, title, description = '', switching, onClick, mods } = props;
10
- return (react_1.default.createElement("div", { key: id, className: b('content-wrapper') },
11
- react_1.default.createElement("div", { className: b('content', mods), onClick: onClick },
12
- react_1.default.createElement("div", { className: b('loader-block', Object.assign(Object.assign({}, mods), { auto: switching })) }),
13
- react_1.default.createElement("h2", { className: b('title') }, title),
14
- description && (react_1.default.createElement("div", { className: b('description') },
15
- react_1.default.createElement(YFMWrapper_1.default, { content: description, modifiers: { constructor: true } }))))));
16
- };
17
- exports.default = PreviewContent;
@@ -1,54 +0,0 @@
1
- .pc-preview-media-block__title {
2
- margin: 0;
3
- }
4
-
5
- /* use this for style redefinitions to awoid problems with
6
- unpredictable css rules order in build */
7
- @media (min-width: 769px) {
8
- .pc-preview-media-block.pc-AnimateBlock .pc-preview-media-block __media, .pc-AnimateBlock .pc-preview-media-block .pc-preview-media-block __media {
9
- position: relative;
10
- top: 100px;
11
- opacity: 0;
12
- }
13
- .pc-preview-media-block.pc-AnimateBlock.animate .pc-preview-media-block __media, .pc-AnimateBlock .pc-preview-media-block.animate .pc-preview-media-block __media {
14
- top: 0;
15
- opacity: 1;
16
- transition: top 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94), opacity 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94);
17
- transition-delay: 0s;
18
- }
19
- }
20
- .pc-preview-media-block__title {
21
- font-size: var(--yc-text-display-2-font-size);
22
- line-height: var(--yc-text-display-2-line-height);
23
- color: var(--pc-text-header-color);
24
- font-weight: var(--yc-text-accent-font-weight);
25
- }
26
- @media (max-width: 576px) {
27
- .pc-preview-media-block__title {
28
- font-size: var(--yc-text-display-1-font-size);
29
- line-height: var(--yc-text-display-1-line-height);
30
- }
31
- }
32
- .pc-preview-media-block__media {
33
- box-shadow: 0 2px 8px var(--pc-color-sfx-shadow), 0 4px 24px var(--pc-color-sfx-shadow);
34
- overflow-x: hidden;
35
- border-radius: var(--pc-border-radius);
36
- overflow: hidden;
37
- display: none;
38
- }
39
- .pc-preview-media-block__media img {
40
- width: 100%;
41
- }
42
- .pc-preview-media-block__media img,
43
- .pc-preview-media-block__media video,
44
- .pc-preview-media-block__media iframe {
45
- border-radius: var(--pc-border-radius);
46
- }
47
- .pc-preview-media-block__media_active {
48
- display: block;
49
- }
50
- @media (max-width: 769px) {
51
- .pc-preview-media-block__media_active {
52
- width: 100%;
53
- }
54
- }
@@ -1,9 +0,0 @@
1
- import { MediaProps, Modifiers } from '../../../models';
2
- interface PreviewMediaProps {
3
- id: number;
4
- media: MediaProps;
5
- play: boolean;
6
- mods: Modifiers | null;
7
- }
8
- declare const PreviewMedia: (props: PreviewMediaProps) => JSX.Element;
9
- export default PreviewMedia;
@@ -1,13 +0,0 @@
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 Media_1 = tslib_1.__importDefault(require("../../../components/Media/Media"));
6
- const utils_1 = require("../../../utils");
7
- const b = (0, utils_1.block)('preview-media-block');
8
- const PreviewMedia = (props) => {
9
- const { id, media, play, mods } = props;
10
- return (react_1.default.createElement("div", { key: id, className: b('media', mods) },
11
- react_1.default.createElement(Media_1.default, Object.assign({}, media, { playVideo: play }))));
12
- };
13
- exports.default = PreviewMedia;
@@ -1,50 +0,0 @@
1
- /* use this for style redefinitions to awoid problems with
2
- unpredictable css rules order in build */
3
- .pc-preview-block__row > * {
4
- height: fit-content;
5
- margin: auto;
6
- }
7
- .pc-preview-block__row_reverse {
8
- flex-direction: row-reverse;
9
- }
10
- .pc-preview-block__row > .col.pc-preview-media-content-block__media {
11
- padding: 0 16px;
12
- }
13
- @media (min-width: 769px) {
14
- .pc-preview-block__row {
15
- display: flex;
16
- }
17
- .pc-preview-block__row > .col.pc-preview-media-content-block__content {
18
- padding: 0 48px 0 16px;
19
- }
20
- .pc-preview-block__row_reverse > .col.pc-preview-media-content-block__content {
21
- padding: 0 16px 0 48px;
22
- }
23
- }
24
- @media (min-width: 577px) and (max-width: 769px) {
25
- .pc-preview-block__row_reverse {
26
- flex-direction: row;
27
- }
28
- .pc-preview-block__row > .col.pc-preview-media-content-block__content {
29
- padding: 0;
30
- }
31
- .pc-preview-block__row > .col.pc-preview-media-content-block__media {
32
- padding: 0 32px;
33
- }
34
- .pc-preview-block .pc-preview-block__row_reverse.row, .pc-preview-block .pc-preview-block__row.row {
35
- margin-left: -32px;
36
- margin-right: -32px;
37
- }
38
- }
39
- @media (max-width: 577px) {
40
- .pc-preview-block__row > .col.pc-preview-media-content-block__content {
41
- padding: 0;
42
- }
43
- .pc-preview-block__row > .col.pc-preview-media-content-block__media {
44
- padding: 0 20px;
45
- }
46
- .pc-preview-block .pc-preview-block__row_reverse.row, .pc-preview-block .pc-preview-block__row.row {
47
- margin-left: -20px;
48
- margin-right: -20px;
49
- }
50
- }
@@ -1,3 +0,0 @@
1
- import { PreviewBlockProps } from '../../models';
2
- export declare const PreviewBlock: (props: PreviewBlockProps) => JSX.Element;
3
- export default PreviewBlock;
@@ -1,130 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PreviewBlock = void 0;
4
- const tslib_1 = require("tslib");
5
- const react_1 = tslib_1.__importStar(require("react"));
6
- const AnimateBlock_1 = tslib_1.__importDefault(require("../../components/AnimateBlock/AnimateBlock"));
7
- const constants_1 = require("../../constants");
8
- const breakpointContext_1 = require("../../context/breakpointContext");
9
- const grid_1 = require("../../grid");
10
- const useIntersection_1 = require("../../hooks/useIntersection");
11
- const utils_1 = require("../../utils");
12
- const MediaContent_1 = tslib_1.__importDefault(require("./MediaContent/MediaContent"));
13
- const b = (0, utils_1.block)('preview-block');
14
- const SWITCHING_INTERVAL = 5 * 1000;
15
- const WIDTH_MENU_ITEM_MD_SIZE = 275;
16
- const INDENT_MENU_ITEM_MD_SIZE = 16;
17
- const SCROLL_ITEM_SECONDS = 1;
18
- const SCROLL_ITEM_SPEED = 2;
19
- const CLASSNAME_DESCRIPTION_YFM_BLOCK = 'yfm';
20
- const CLASSNAME_CONTENT_WRAPPER = 'preview-media-content-block__content-wrapper';
21
- const INDENT_BETWEEN_TITLE_DESCRIPTION = 16;
22
- const PreviewBlock = (props) => {
23
- const { direction = 'content-media', animated, items, title, description, ratioMediaContent = '1-1', stopVideo = false,
24
- // TODO YDB-server doesn't see previewRef.current and doesn't update the component CLOUDFRONT-9395
25
- showImmediately = false, } = props;
26
- const breakpoint = (0, react_1.useContext)(breakpointContext_1.BreakpointContext);
27
- const isDesktop = breakpoint >= constants_1.BREAKPOINTS.md;
28
- const menuRef = react_1.default.useRef(null);
29
- const previewRef = react_1.default.useRef(null);
30
- const inViewport = (0, useIntersection_1.useIntersection)(previewRef.current);
31
- const [stopSwitching, setStopSwitching] = (0, react_1.useState)(stopVideo);
32
- const [activeSlide, setActiveSlide] = (0, react_1.useState)(-1);
33
- const [autoSwitchTimerId, setAutoSwitchTimerId] = (0, react_1.useState)(0);
34
- const isActiveBlock = (0, react_1.useCallback)((id, isMediaBlock = false) => {
35
- return isMediaBlock || inViewport ? activeSlide === id : false;
36
- }, [inViewport, activeSlide]);
37
- const changeActiveSlide = (0, react_1.useCallback)((params) => {
38
- const { current, nextSlide, currentSlide, timerId } = params;
39
- if (isDesktop) {
40
- changeDescriptionHeight(current, nextSlide, currentSlide);
41
- }
42
- else {
43
- changeMenuScroll(current, nextSlide, currentSlide);
44
- }
45
- setActiveSlide(nextSlide);
46
- clearTimeout(timerId);
47
- }, [isDesktop]);
48
- (0, react_1.useEffect)(() => {
49
- // TODO YDB-server doesn't see previewRef.current and doesn't update the component CLOUDFRONT-9395
50
- if (!items[activeSlide] && (showImmediately || inViewport)) {
51
- setActiveSlide(0);
52
- if (isDesktop) {
53
- changeDescriptionHeight(menuRef.current, 0);
54
- }
55
- }
56
- }, [inViewport, activeSlide, isDesktop, items, showImmediately]);
57
- (0, react_1.useEffect)(() => {
58
- if (stopSwitching || !inViewport) {
59
- return () => { };
60
- }
61
- const timerId = setTimeout(() => {
62
- if (stopSwitching) {
63
- clearTimeout(timerId);
64
- return;
65
- }
66
- const nextSlide = activeSlide + 1 >= items.length ? 0 : activeSlide + 1;
67
- changeActiveSlide({
68
- current: menuRef.current,
69
- nextSlide,
70
- currentSlide: activeSlide,
71
- timerId: timerId,
72
- });
73
- }, SWITCHING_INTERVAL);
74
- setAutoSwitchTimerId(timerId);
75
- return () => clearTimeout(timerId);
76
- }, [changeActiveSlide, activeSlide, items.length, stopSwitching, inViewport]);
77
- const showMediaContent = (0, react_1.useCallback)((nextSlide) => {
78
- changeActiveSlide({
79
- current: menuRef.current,
80
- nextSlide,
81
- currentSlide: activeSlide,
82
- timerId: autoSwitchTimerId,
83
- });
84
- setStopSwitching(true);
85
- }, [changeActiveSlide, activeSlide, autoSwitchTimerId]);
86
- return (react_1.default.createElement(AnimateBlock_1.default, { className: b(), animate: animated },
87
- react_1.default.createElement(grid_1.Row, { ref: previewRef, className: b('row', { reverse: direction === 'media-content' }) },
88
- react_1.default.createElement(MediaContent_1.default, { ref: menuRef, items: items, title: title, description: description, ratioMediaContent: ratioMediaContent, switching: !stopSwitching, isActiveBlock: isActiveBlock, showMediaContent: showMediaContent }))));
89
- };
90
- exports.PreviewBlock = PreviewBlock;
91
- function changeMenuScroll(element, nextSlide, activeSlide) {
92
- if (!element) {
93
- return;
94
- }
95
- const scrollPosition = element.scrollLeft;
96
- const endPosition = nextSlide === 0 ? 0 : nextSlide * WIDTH_MENU_ITEM_MD_SIZE + INDENT_MENU_ITEM_MD_SIZE;
97
- const distance = Math.abs(scrollPosition - endPosition);
98
- const isReverse = nextSlide === 0 || nextSlide < activeSlide;
99
- const scrollOptions = {
100
- distance,
101
- timeSeconds: SCROLL_ITEM_SECONDS,
102
- speed: SCROLL_ITEM_SPEED,
103
- reverseParams: isReverse ? { distance } : undefined,
104
- };
105
- (0, utils_1.doSmoothScroll)(element, scrollPosition, scrollOptions);
106
- }
107
- function changeDescriptionHeight(element, nextActiveSlide, prevActiveSlide = 0) {
108
- const contentWrapper = element === null || element === void 0 ? void 0 : element.getElementsByClassName(CLASSNAME_CONTENT_WRAPPER);
109
- if (!contentWrapper || contentWrapper.length === 0) {
110
- return;
111
- }
112
- const menuItems = contentWrapper[0].children;
113
- updateHeight(menuItems, nextActiveSlide);
114
- if (nextActiveSlide !== prevActiveSlide) {
115
- updateHeight(menuItems, prevActiveSlide, false);
116
- }
117
- }
118
- function updateHeight(menuItems, slide, isExpand = true) {
119
- const item = menuItems[slide];
120
- const yfmBlock = item.getElementsByClassName(CLASSNAME_DESCRIPTION_YFM_BLOCK)[0];
121
- if (yfmBlock) {
122
- const yfmBlockElement = yfmBlock;
123
- const yfmBlockHeight = yfmBlockElement.offsetHeight;
124
- const yfmBlockOffsetParent = yfmBlockElement.offsetParent;
125
- yfmBlockOffsetParent.style.height = isExpand
126
- ? `${yfmBlockHeight + INDENT_BETWEEN_TITLE_DESCRIPTION}px`
127
- : '0px';
128
- }
129
- }
130
- exports.default = exports.PreviewBlock;
@@ -1,40 +0,0 @@
1
- export declare const PreviewBlock: {
2
- 'preview-block': {
3
- additionalProperties: boolean;
4
- required: string[];
5
- properties: {
6
- title: {
7
- type: string;
8
- contentType: string;
9
- };
10
- description: {
11
- type: string;
12
- contentType: string;
13
- };
14
- direction: {
15
- type: string;
16
- enum: string[];
17
- };
18
- ratioMediaContent: {
19
- type: string;
20
- enum: string[];
21
- };
22
- items: {
23
- type: string;
24
- items: {
25
- type: string;
26
- properties: {
27
- when: {
28
- type: string;
29
- };
30
- };
31
- };
32
- };
33
- animated: {
34
- type: string;
35
- };
36
- type: {};
37
- when: {};
38
- };
39
- };
40
- };