@gravity-ui/page-constructor 1.15.0-alpha.2 → 1.15.0-alpha.21

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 (149) hide show
  1. package/README.md +110 -5
  2. package/build/cjs/blocks/Banner/schema.d.ts +27 -0
  3. package/build/cjs/blocks/Banner/schema.js +3 -1
  4. package/build/cjs/blocks/CardLayout/schema.d.ts +6 -0
  5. package/build/cjs/blocks/ContentLayout/schema.d.ts +3 -0
  6. package/build/cjs/blocks/ExtendedFeatures/schema.d.ts +3 -0
  7. package/build/cjs/blocks/Header/schema.d.ts +159 -0
  8. package/build/cjs/blocks/Header/schema.js +4 -0
  9. package/build/cjs/blocks/HeaderSlider/schema.d.ts +81 -0
  10. package/build/cjs/blocks/Icons/schema.d.ts +6 -0
  11. package/build/cjs/blocks/Info/schema.d.ts +3 -0
  12. package/build/cjs/blocks/Info/schema.js +2 -0
  13. package/build/cjs/blocks/LinkTable/schema.d.ts +3 -0
  14. package/build/cjs/blocks/Media/schema.d.ts +9 -0
  15. package/build/cjs/blocks/Preview/MediaContent/MediaContent.d.ts +2 -1
  16. package/build/cjs/blocks/Preview/schema.d.ts +3 -0
  17. package/build/cjs/blocks/Preview/schema.js +3 -1
  18. package/build/cjs/blocks/PromoFeaturesBlock/schema.d.ts +3 -0
  19. package/build/cjs/blocks/Questions/schema.d.ts +3 -0
  20. package/build/cjs/blocks/Security/schema.d.ts +3 -0
  21. package/build/cjs/blocks/Security/schema.js +3 -1
  22. package/build/cjs/blocks/Share/Share.js +12 -1
  23. package/build/cjs/blocks/Simple/schema.d.ts +3 -0
  24. package/build/cjs/blocks/Slider/schema.d.ts +3 -0
  25. package/build/cjs/blocks/Table/schema.d.ts +3 -0
  26. package/build/cjs/blocks/Tabs/schema.d.ts +3 -0
  27. package/build/cjs/components/BackLink/BackLink.d.ts +1 -0
  28. package/build/cjs/components/BackLink/BackLink.js +12 -2
  29. package/build/cjs/components/Button/Button.d.ts +1 -0
  30. package/build/cjs/components/Button/Button.js +15 -2
  31. package/build/cjs/components/ButtonTabs/ButtonTabs.d.ts +1 -0
  32. package/build/cjs/components/CardBase/CardBase.d.ts +1 -0
  33. package/build/cjs/components/CardBase/CardBase.js +11 -2
  34. package/build/cjs/components/HeaderBreadcrumbs/HeaderBreadcrumbs.css +0 -30
  35. package/build/cjs/components/HeaderBreadcrumbs/HeaderBreadcrumbs.js +3 -11
  36. package/build/cjs/components/HeaderBreadcrumbs/HeaderBreadcrumbsItem.css +30 -0
  37. package/build/cjs/components/HeaderBreadcrumbs/HeaderBreadcrumbsItem.d.ts +12 -0
  38. package/build/cjs/components/HeaderBreadcrumbs/HeaderBreadcrumbsItem.js +28 -0
  39. package/build/cjs/components/Link/Link.js +11 -2
  40. package/build/cjs/components/Media/Video/Video.js +1 -1
  41. package/build/cjs/components/ReactPlayer/ReactPlayer.js +21 -25
  42. package/build/cjs/components/YandexForm/YandexForm.d.ts +1 -0
  43. package/build/cjs/components/YandexForm/YandexForm.js +11 -3
  44. package/build/cjs/containers/PageConstructor/components/ConstructorBlocks/ConstructorBlocks.js +5 -4
  45. package/build/cjs/containers/PageConstructor/components/ConstructorItem/ConstructorItem.d.ts +2 -1
  46. package/build/cjs/containers/PageConstructor/components/ConstructorItem/ConstructorItem.js +4 -2
  47. package/build/cjs/context/analyticsContext/analyticsContext.d.ts +2 -1
  48. package/build/cjs/context/blockPositionContext/blockPositionContext.d.ts +3 -0
  49. package/build/cjs/context/blockPositionContext/blockPositionContext.js +6 -0
  50. package/build/cjs/context/blockPositionContext/index.d.ts +1 -0
  51. package/build/cjs/context/blockPositionContext/index.js +4 -0
  52. package/build/cjs/hooks/useAnalytics.d.ts +1 -1
  53. package/build/cjs/hooks/useAnalytics.js +13 -7
  54. package/build/cjs/models/common.d.ts +7 -4
  55. package/build/cjs/models/common.js +7 -1
  56. package/build/cjs/models/constructor-items/blocks.d.ts +10 -0
  57. package/build/cjs/models/constructor-items/common.d.ts +9 -4
  58. package/build/cjs/models/constructor-items/sub-blocks.d.ts +4 -1
  59. package/build/cjs/navigation/components/NavigationItem/NavigationItem.js +3 -2
  60. package/build/cjs/schema/validators/common.d.ts +15 -0
  61. package/build/cjs/schema/validators/common.js +2 -0
  62. package/build/cjs/schema/validators/event.d.ts +3 -0
  63. package/build/cjs/schema/validators/event.js +3 -0
  64. package/build/cjs/sub-blocks/BackgroundCard/schema.d.ts +3 -0
  65. package/build/cjs/sub-blocks/BackgroundCard/schema.js +2 -0
  66. package/build/cjs/sub-blocks/HubspotForm/index.js +10 -2
  67. package/build/cjs/sub-blocks/Quote/Quote.js +12 -1
  68. package/build/cjs/sub-blocks/Quote/schema.d.ts +3 -0
  69. package/build/cjs/sub-blocks/Quote/schema.js +3 -1
  70. package/build/cjs/utils/blocks.d.ts +7 -0
  71. package/build/cjs/utils/blocks.js +5 -1
  72. package/build/esm/blocks/Banner/schema.d.ts +27 -0
  73. package/build/esm/blocks/Banner/schema.js +3 -1
  74. package/build/esm/blocks/CardLayout/schema.d.ts +6 -0
  75. package/build/esm/blocks/ContentLayout/schema.d.ts +3 -0
  76. package/build/esm/blocks/ExtendedFeatures/schema.d.ts +3 -0
  77. package/build/esm/blocks/Header/schema.d.ts +159 -0
  78. package/build/esm/blocks/Header/schema.js +4 -0
  79. package/build/esm/blocks/HeaderSlider/schema.d.ts +81 -0
  80. package/build/esm/blocks/Icons/schema.d.ts +6 -0
  81. package/build/esm/blocks/Info/schema.d.ts +3 -0
  82. package/build/esm/blocks/Info/schema.js +2 -0
  83. package/build/esm/blocks/LinkTable/schema.d.ts +3 -0
  84. package/build/esm/blocks/Media/schema.d.ts +9 -0
  85. package/build/esm/blocks/Preview/MediaContent/MediaContent.d.ts +2 -1
  86. package/build/esm/blocks/Preview/schema.d.ts +3 -0
  87. package/build/esm/blocks/Preview/schema.js +3 -1
  88. package/build/esm/blocks/PromoFeaturesBlock/schema.d.ts +3 -0
  89. package/build/esm/blocks/Questions/schema.d.ts +3 -0
  90. package/build/esm/blocks/Security/schema.d.ts +3 -0
  91. package/build/esm/blocks/Security/schema.js +3 -1
  92. package/build/esm/blocks/Share/Share.js +13 -2
  93. package/build/esm/blocks/Simple/schema.d.ts +3 -0
  94. package/build/esm/blocks/Slider/schema.d.ts +3 -0
  95. package/build/esm/blocks/Table/schema.d.ts +3 -0
  96. package/build/esm/blocks/Tabs/schema.d.ts +3 -0
  97. package/build/esm/components/BackLink/BackLink.d.ts +1 -0
  98. package/build/esm/components/BackLink/BackLink.js +12 -2
  99. package/build/esm/components/Button/Button.d.ts +1 -0
  100. package/build/esm/components/Button/Button.js +16 -3
  101. package/build/esm/components/ButtonTabs/ButtonTabs.d.ts +1 -0
  102. package/build/esm/components/CardBase/CardBase.d.ts +1 -0
  103. package/build/esm/components/CardBase/CardBase.js +12 -3
  104. package/build/esm/components/HeaderBreadcrumbs/HeaderBreadcrumbs.css +0 -30
  105. package/build/esm/components/HeaderBreadcrumbs/HeaderBreadcrumbs.js +3 -11
  106. package/build/esm/components/HeaderBreadcrumbs/HeaderBreadcrumbsItem.css +30 -0
  107. package/build/esm/components/HeaderBreadcrumbs/HeaderBreadcrumbsItem.d.ts +13 -0
  108. package/build/esm/components/HeaderBreadcrumbs/HeaderBreadcrumbsItem.js +25 -0
  109. package/build/esm/components/Link/Link.js +12 -3
  110. package/build/esm/components/Media/Video/Video.js +1 -1
  111. package/build/esm/components/ReactPlayer/ReactPlayer.js +22 -26
  112. package/build/esm/components/YandexForm/YandexForm.d.ts +1 -0
  113. package/build/esm/components/YandexForm/YandexForm.js +12 -4
  114. package/build/esm/containers/PageConstructor/components/ConstructorBlocks/ConstructorBlocks.js +6 -5
  115. package/build/esm/containers/PageConstructor/components/ConstructorItem/ConstructorItem.d.ts +2 -1
  116. package/build/esm/containers/PageConstructor/components/ConstructorItem/ConstructorItem.js +4 -2
  117. package/build/esm/context/analyticsContext/analyticsContext.d.ts +2 -1
  118. package/build/esm/context/blockPositionContext/blockPositionContext.d.ts +3 -0
  119. package/build/esm/context/blockPositionContext/blockPositionContext.js +2 -0
  120. package/build/esm/context/blockPositionContext/index.d.ts +1 -0
  121. package/build/esm/context/blockPositionContext/index.js +1 -0
  122. package/build/esm/hooks/useAnalytics.d.ts +1 -1
  123. package/build/esm/hooks/useAnalytics.js +13 -7
  124. package/build/esm/models/common.d.ts +7 -4
  125. package/build/esm/models/common.js +6 -0
  126. package/build/esm/models/constructor-items/blocks.d.ts +10 -0
  127. package/build/esm/models/constructor-items/common.d.ts +9 -4
  128. package/build/esm/models/constructor-items/sub-blocks.d.ts +4 -1
  129. package/build/esm/navigation/components/NavigationItem/NavigationItem.js +3 -2
  130. package/build/esm/schema/validators/common.d.ts +15 -0
  131. package/build/esm/schema/validators/common.js +2 -0
  132. package/build/esm/schema/validators/event.d.ts +3 -0
  133. package/build/esm/schema/validators/event.js +3 -0
  134. package/build/esm/sub-blocks/BackgroundCard/schema.d.ts +3 -0
  135. package/build/esm/sub-blocks/BackgroundCard/schema.js +2 -0
  136. package/build/esm/sub-blocks/HubspotForm/index.js +10 -2
  137. package/build/esm/sub-blocks/Quote/Quote.js +14 -3
  138. package/build/esm/sub-blocks/Quote/schema.d.ts +3 -0
  139. package/build/esm/sub-blocks/Quote/schema.js +3 -1
  140. package/build/esm/utils/blocks.d.ts +7 -0
  141. package/build/esm/utils/blocks.js +3 -0
  142. package/package.json +1 -1
  143. package/server/models/common.d.ts +7 -4
  144. package/server/models/common.js +7 -1
  145. package/server/models/constructor-items/blocks.d.ts +10 -0
  146. package/server/models/constructor-items/common.d.ts +9 -4
  147. package/server/models/constructor-items/sub-blocks.d.ts +4 -1
  148. package/server/utils/blocks.d.ts +7 -0
  149. package/server/utils/blocks.js +5 -1
@@ -4,11 +4,13 @@ exports.ConstructorHeader = exports.ConstructorItem = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importStar(require("react"));
6
6
  const innerContext_1 = require("../../../../context/innerContext");
7
- const ConstructorItem = ({ data, children }) => {
7
+ const blockPositionContext_1 = require("../../../../context/blockPositionContext");
8
+ const ConstructorItem = ({ data, children, context }) => {
8
9
  const { itemMap } = (0, react_1.useContext)(innerContext_1.InnerContext);
9
10
  const { type } = data, rest = tslib_1.__rest(data, ["type"]);
10
11
  const Component = itemMap[type];
11
- return react_1.default.createElement(Component, Object.assign({}, rest), children);
12
+ return (react_1.default.createElement(blockPositionContext_1.BlockPositionContext.Provider, { value: context || type },
13
+ react_1.default.createElement(Component, Object.assign({}, rest), children)));
12
14
  };
13
15
  exports.ConstructorItem = ConstructorItem;
14
16
  const ConstructorHeader = ({ data }) => (react_1.default.createElement(exports.ConstructorItem, { data: data, key: data.type }));
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { AnalyticsEvent } from '../../models';
3
3
  export interface AnalyticsContextProps {
4
- sendEvents?: (e: AnalyticsEvent | AnalyticsEvent[], defaults?: Record<string, string | boolean | number>) => void;
4
+ sendEvents?: (events: AnalyticsEvent[]) => void;
5
+ autoEvents?: boolean;
5
6
  }
6
7
  export declare const AnalyticsContext: React.Context<AnalyticsContextProps>;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export type BlockPositionContextProp = string;
3
+ export declare const BlockPositionContext: React.Context<string>;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BlockPositionContext = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importDefault(require("react"));
6
+ exports.BlockPositionContext = react_1.default.createContext('');
@@ -0,0 +1 @@
1
+ export * from './blockPositionContext';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./blockPositionContext"), exports);
@@ -1,2 +1,2 @@
1
1
  import { AnalyticsEvent } from '../models';
2
- export declare const useAnalytics: () => ((e?: AnalyticsEvent | AnalyticsEvent[], defaults?: Record<string, string | boolean | number>) => void) | undefined;
2
+ export declare const useAnalytics: (defaultEvent?: AnalyticsEvent) => ((e?: AnalyticsEvent | AnalyticsEvent[]) => void) & import("lodash").MemoizedFunction;
@@ -1,18 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useAnalytics = void 0;
4
+ const lodash_1 = require("lodash");
4
5
  const react_1 = require("react");
5
6
  const analyticsContext_1 = require("../context/analyticsContext");
6
- const useAnalytics = () => {
7
- const { sendEvents } = (0, react_1.useContext)(analyticsContext_1.AnalyticsContext);
7
+ const useAnalytics = (defaultEvent) => {
8
+ const { sendEvents, autoEvents } = (0, react_1.useContext)(analyticsContext_1.AnalyticsContext);
8
9
  if (!sendEvents) {
9
- return undefined;
10
+ return (0, lodash_1.memoize)(() => { });
10
11
  }
11
- return (e, defaults) => {
12
- if (!e) {
12
+ const defaultEvents = defaultEvent && autoEvents ? [defaultEvent] : [];
13
+ return (0, lodash_1.memoize)((e) => {
14
+ let events = defaultEvents;
15
+ if (e) {
16
+ events = Array.isArray(e) ? [...events, ...e] : [...events, e];
17
+ }
18
+ if (!events) {
13
19
  return;
14
20
  }
15
- sendEvents(e, defaults);
16
- };
21
+ sendEvents(events);
22
+ });
17
23
  };
18
24
  exports.useAnalytics = useAnalytics;
@@ -64,10 +64,11 @@ export interface ClassNameProps {
64
64
  className?: string;
65
65
  }
66
66
  export type Timeout = ReturnType<typeof setTimeout> | undefined;
67
- export type AnalyticsParameter = {
68
- key: string;
69
- value: string | number | boolean;
70
- };
67
+ export declare enum PredefinedEventTypes {
68
+ Default = "default-event",
69
+ Play = "play",
70
+ Stop = "stop"
71
+ }
71
72
  export type AnalyticsCounters = {
72
73
  include?: string[];
73
74
  exclude?: string[];
@@ -76,5 +77,7 @@ export type AnalyticsEvent<T = {}> = T & {
76
77
  name: string;
77
78
  type?: string;
78
79
  counters?: AnalyticsCounters;
80
+ context?: string;
81
+ target?: string;
79
82
  };
80
83
  export {};
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PixelEventType = exports.Theme = void 0;
3
+ exports.PredefinedEventTypes = exports.PixelEventType = exports.Theme = void 0;
4
4
  var Theme;
5
5
  (function (Theme) {
6
6
  Theme["Light"] = "light";
@@ -30,3 +30,9 @@ var PixelEventType;
30
30
  PixelEventType["Subscribe"] = "Subscribe";
31
31
  PixelEventType["ViewContent"] = "ViewContent";
32
32
  })(PixelEventType = exports.PixelEventType || (exports.PixelEventType = {}));
33
+ var PredefinedEventTypes;
34
+ (function (PredefinedEventTypes) {
35
+ PredefinedEventTypes["Default"] = "default-event";
36
+ PredefinedEventTypes["Play"] = "play";
37
+ PredefinedEventTypes["Stop"] = "stop";
38
+ })(PredefinedEventTypes = exports.PredefinedEventTypes || (exports.PredefinedEventTypes = {}));
@@ -109,6 +109,7 @@ export interface HeaderBlockProps {
109
109
  verticalOffset?: 's' | 'm' | 'l' | 'xl';
110
110
  breadcrumbs?: HeaderBreadCrumbsProps;
111
111
  status?: JSX.Element;
112
+ context?: string;
112
113
  }
113
114
  export type CalculatorProps = Animatable;
114
115
  export interface SimpleBlockProps extends Animatable, Childable {
@@ -127,6 +128,7 @@ export interface ExtendedFeaturesProps extends Animatable {
127
128
  title?: TitleProps | string;
128
129
  description?: string;
129
130
  colSizes?: GridColumnSizesType;
131
+ context?: string;
130
132
  }
131
133
  export interface PromoFeaturesItem {
132
134
  title: string;
@@ -139,6 +141,7 @@ export interface PromoFeaturesProps extends Animatable {
139
141
  title?: TitleProps | string;
140
142
  description?: string;
141
143
  theme?: 'grey' | 'default';
144
+ context?: string;
142
145
  }
143
146
  export interface QuestionItem {
144
147
  title: string;
@@ -163,6 +166,7 @@ export interface MediaContentProps {
163
166
  links?: LinkProps[];
164
167
  buttons?: ButtonProps[];
165
168
  size?: ContentSize;
169
+ context?: string;
166
170
  }
167
171
  export interface MediaBlockProps extends Animatable, MediaContentProps {
168
172
  media: ThemeSupporting<MediaProps>;
@@ -180,6 +184,7 @@ export interface PreviewBlockProps extends Animatable {
180
184
  ratioMediaContent?: PreviewRatioMediaContent;
181
185
  stopVideo?: boolean;
182
186
  showImmediately?: boolean;
187
+ context?: string;
183
188
  }
184
189
  export interface InfoBlockProps {
185
190
  theme?: TextTheme;
@@ -194,6 +199,7 @@ export interface InfoBlockProps {
194
199
  links?: Pick<LinkProps, 'text' | 'url'>[];
195
200
  leftContent?: Omit<ContentBlockProps, 'colSizes' | 'theme' | 'size'>;
196
201
  rightContent?: Omit<ContentBlockProps, 'colSizes' | 'theme' | 'size'>;
202
+ context?: string;
197
203
  }
198
204
  export interface SecurityBlockPoint {
199
205
  img: string;
@@ -209,6 +215,7 @@ export interface SecurityBlockProps extends Animatable {
209
215
  title: string;
210
216
  points?: SecurityBlockPoint[];
211
217
  media: MediaProps;
218
+ context?: string;
212
219
  }
213
220
  export interface TableProps {
214
221
  content: string[][];
@@ -235,6 +242,7 @@ export interface TabsBlockProps extends BlockHeaderProps, Animatable {
235
242
  centered?: boolean;
236
243
  direction?: MediaDirection;
237
244
  items: TabsBlockItem[];
245
+ context?: string;
238
246
  }
239
247
  export interface LinkTableBlockProps extends BlockHeaderProps {
240
248
  items: LinkProps[][];
@@ -264,6 +272,7 @@ export interface ContentLayoutBlockProps {
264
272
  };
265
273
  textContent: ContentBlockProps;
266
274
  fileContent?: FileLinkProps[];
275
+ context?: string;
267
276
  }
268
277
  export interface ContentBlockProps {
269
278
  title?: TitleBaseProps | string;
@@ -275,6 +284,7 @@ export interface ContentBlockProps {
275
284
  colSizes?: GridColumnSizesType;
276
285
  centered?: boolean;
277
286
  theme?: ContentTheme;
287
+ context?: string;
278
288
  }
279
289
  export declare enum PCShareSocialNetwork {
280
290
  Vk = "vk",
@@ -110,7 +110,8 @@ export interface MediaVideoProps {
110
110
  playButton?: PlayButtonProps;
111
111
  controls?: MediaVideoControlsType;
112
112
  metrika?: MetrikaVideo;
113
- analyticsEvents?: AnalyticsEvent[];
113
+ analyticsEvents?: AnalyticsEvent | AnalyticsEvent[];
114
+ context?: string;
114
115
  }
115
116
  export interface LinkProps extends Stylable {
116
117
  url: string;
@@ -123,6 +124,7 @@ export interface LinkProps extends Stylable {
123
124
  metrikaGoals?: MetrikaGoal;
124
125
  pixelEvents?: ButtonPixel;
125
126
  analyticsEvents?: AnalyticsEvent | AnalyticsEvent[];
127
+ context?: string;
126
128
  }
127
129
  export interface FileLinkProps extends ClassNameProps {
128
130
  href: string;
@@ -141,8 +143,9 @@ export interface ButtonProps {
141
143
  img?: ButtonImageProps | string;
142
144
  metrikaGoals?: MetrikaGoal;
143
145
  pixelEvents?: ButtonPixel;
144
- analyticsEvents?: AnalyticsEvent[];
146
+ analyticsEvents?: AnalyticsEvent | AnalyticsEvent[];
145
147
  target?: string;
148
+ context?: string;
146
149
  }
147
150
  export interface ButtonImageProps {
148
151
  url: string;
@@ -170,7 +173,8 @@ export interface MediaComponentVideoProps {
170
173
  video: MediaVideoProps;
171
174
  height?: number;
172
175
  metrika?: MetrikaVideo;
173
- analyticsEvents?: AnalyticsEvent[];
176
+ analyticsEvents?: AnalyticsEvent | AnalyticsEvent[];
177
+ context?: string;
174
178
  previewImg?: string;
175
179
  }
176
180
  export interface MediaComponentYoutubeProps {
@@ -222,11 +226,12 @@ export interface HeaderBreadCrumbsProps extends ClassNameProps {
222
226
  items: {
223
227
  url: string;
224
228
  text: ReactNode;
229
+ analyticsEvents?: AnalyticsEvent | AnalyticsEvent[];
225
230
  }[];
226
231
  theme?: TextTheme;
227
232
  metrikaGoals?: MetrikaGoal;
228
233
  pixelEvents?: ButtonPixel;
229
- analyticsEvents?: AnalyticsEvent | AnalyticsEvent[];
234
+ context?: string;
230
235
  }
231
236
  export interface PreviewContentItemProps {
232
237
  title: string;
@@ -62,6 +62,7 @@ export interface HubspotFormProps extends HubspotEventHandlers {
62
62
  pixelEvents?: string | string[] | PixelEvent | PixelEvent[] | ButtonPixel;
63
63
  hubspotEvents?: string[];
64
64
  analyticsEvents?: AnalyticsEvent | AnalyticsEvent[];
65
+ context?: string;
65
66
  }
66
67
  export interface PartnerProps extends CardBaseProps {
67
68
  text: string;
@@ -77,6 +78,7 @@ export interface QuoteProps extends Themable, CardBaseProps {
77
78
  author?: AuthorItem;
78
79
  buttonText?: string;
79
80
  theme?: TextTheme;
81
+ context?: string;
80
82
  }
81
83
  export interface NewsCardData {
82
84
  id: number;
@@ -111,6 +113,7 @@ export interface BannerCardProps {
111
113
  color?: ThemeSupporting<string>;
112
114
  theme?: TextTheme;
113
115
  button: Pick<ButtonProps, 'text' | 'url' | 'target'>;
116
+ context?: string;
114
117
  }
115
118
  export interface MediaCardProps extends MediaProps, CardBaseProps {
116
119
  }
@@ -118,7 +121,7 @@ export interface CardWithImageLinkProps extends Omit<LinkProps, 'text' | 'url'>
118
121
  title: string;
119
122
  link: string;
120
123
  }
121
- export interface CardWithImageProps extends ClassNameProps, Pick<ContentBlockProps, 'title' | 'additionalInfo' | 'buttons' | 'theme'> {
124
+ export interface CardWithImageProps extends ClassNameProps, Pick<ContentBlockProps, 'title' | 'additionalInfo' | 'buttons' | 'theme' | 'context'> {
122
125
  image: string;
123
126
  description?: string;
124
127
  disableCompress?: boolean;
@@ -10,6 +10,7 @@ const icons_1 = require("../../../icons");
10
10
  const SocialIcon_1 = tslib_1.__importDefault(require("../SocialIcon/SocialIcon"));
11
11
  const utils_2 = require("../../../components/Media/Image/utils");
12
12
  const b = (0, utils_1.block)('navigation-item');
13
+ const BLOCK_NAME = 'navigation';
13
14
  const Content = ({ text, icon }) => (react_1.default.createElement(react_1.Fragment, null,
14
15
  icon && typeof icon !== 'string' && react_1.default.createElement(components_1.Image, Object.assign({ className: b('icon') }, icon)),
15
16
  react_1.default.createElement("span", { className: b('text') }, text)));
@@ -38,8 +39,8 @@ const NavigationLink = (props) => {
38
39
  };
39
40
  const NavigationButton = (props) => {
40
41
  const { url, target } = props;
41
- return target ? (react_1.default.createElement(components_1.Button, Object.assign({}, props, { url: url }))) : (react_1.default.createElement(components_1.RouterLink, { href: url },
42
- react_1.default.createElement(components_1.Button, Object.assign({}, props, { url: url }))));
42
+ return target ? (react_1.default.createElement(components_1.Button, Object.assign({}, props, { url: url, context: BLOCK_NAME }))) : (react_1.default.createElement(components_1.RouterLink, { href: url },
43
+ react_1.default.createElement(components_1.Button, Object.assign({}, props, { url: url, context: BLOCK_NAME }))));
43
44
  };
44
45
  //todo: add types support form component in map
45
46
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -538,6 +538,9 @@ export declare const ButtonProps: {
538
538
  };
539
539
  };
540
540
  };
541
+ context: {
542
+ type: string;
543
+ };
541
544
  };
542
545
  } | {
543
546
  type: string;
@@ -573,6 +576,9 @@ export declare const ButtonProps: {
573
576
  };
574
577
  };
575
578
  };
579
+ context: {
580
+ type: string;
581
+ };
576
582
  };
577
583
  };
578
584
  })[];
@@ -636,6 +642,9 @@ export declare const BlockBaseProps: {
636
642
  resetPaddings: {
637
643
  type: string;
638
644
  };
645
+ context: {
646
+ type: string;
647
+ };
639
648
  type: {};
640
649
  when: {};
641
650
  };
@@ -831,6 +840,9 @@ export declare const ButtonBlock: {
831
840
  };
832
841
  };
833
842
  };
843
+ context: {
844
+ type: string;
845
+ };
834
846
  };
835
847
  } | {
836
848
  type: string;
@@ -866,6 +878,9 @@ export declare const ButtonBlock: {
866
878
  };
867
879
  };
868
880
  };
881
+ context: {
882
+ type: string;
883
+ };
869
884
  };
870
885
  };
871
886
  })[];
@@ -390,6 +390,8 @@ exports.BlockBaseProps = Object.assign(Object.assign({}, exports.BaseProps), { a
390
390
  enum: exports.containerSizesArray,
391
391
  }, resetPaddings: {
392
392
  type: 'boolean',
393
+ }, context: {
394
+ type: 'string',
393
395
  } });
394
396
  exports.TitleProps = {
395
397
  type: 'object',
@@ -30,5 +30,8 @@ export declare const AnalyticsEventSchema: {
30
30
  };
31
31
  };
32
32
  };
33
+ context: {
34
+ type: string;
35
+ };
33
36
  };
34
37
  };
@@ -31,5 +31,8 @@ exports.AnalyticsEventSchema = {
31
31
  },
32
32
  },
33
33
  },
34
+ context: {
35
+ type: 'string',
36
+ },
34
37
  },
35
38
  };
@@ -38,6 +38,9 @@ export declare const BackgroundCard: {
38
38
  type: string;
39
39
  enum: string[];
40
40
  };
41
+ context: {
42
+ type: string;
43
+ };
41
44
  title: {
42
45
  oneOf: ({
43
46
  type: string;
@@ -18,6 +18,8 @@ exports.BackgroundCard = {
18
18
  }, paddingBottom: {
19
19
  type: 'string',
20
20
  enum: ['s', 'm', 'l', 'xl'],
21
+ }, context: {
22
+ type: 'string',
21
23
  } }),
22
24
  },
23
25
  };
@@ -6,15 +6,23 @@ const utils_1 = require("../../utils");
6
6
  const ThemeValueContext_1 = require("../../context/theme/ThemeValueContext");
7
7
  const mobileContext_1 = require("../../context/mobileContext");
8
8
  const useMetrika_1 = require("../../hooks/useMetrika");
9
+ const models_1 = require("../../models");
9
10
  const hooks_1 = require("../../hooks");
10
11
  const HubspotFormContainer_1 = tslib_1.__importDefault(require("./HubspotFormContainer"));
12
+ const blockPositionContext_1 = require("../../context/blockPositionContext");
11
13
  const b = (0, utils_1.block)('hubspot-form');
12
14
  const HubspotForm = (props) => {
13
15
  const { className, theme: themeProp, isMobile: isMobileProp, formId, formInstanceId, portalId, region, formClassName, pixelEvents,
14
16
  // hubspotEvents, // TODO: decide how to handle them
15
17
  analyticsEvents, onBeforeSubmit, onSubmit, onBeforeLoad, onLoad, } = props;
16
18
  const handleMetrika = (0, useMetrika_1.useMetrika)();
17
- const handleAnalytics = (0, hooks_1.useAnalytics)();
19
+ const context = (0, react_1.useContext)(blockPositionContext_1.BlockPositionContext);
20
+ const defaultEvent = (0, react_1.useMemo)(() => ({
21
+ name: 'hubspot-form-submit',
22
+ type: models_1.PredefinedEventTypes.Default,
23
+ context,
24
+ }), [context]);
25
+ const handleAnalytics = (0, hooks_1.useAnalytics)(defaultEvent);
18
26
  const { themeValue } = (0, react_1.useContext)(ThemeValueContext_1.ThemeValueContext);
19
27
  const isMobileValue = (0, react_1.useContext)(mobileContext_1.MobileContext);
20
28
  const theme = themeProp !== null && themeProp !== void 0 ? themeProp : themeValue;
@@ -25,7 +33,7 @@ const HubspotForm = (props) => {
25
33
  onLoad,
26
34
  onSubmit: (e) => {
27
35
  handleMetrika === null || handleMetrika === void 0 ? void 0 : handleMetrika({ pixelEvents });
28
- handleAnalytics === null || handleAnalytics === void 0 ? void 0 : handleAnalytics(analyticsEvents);
36
+ handleAnalytics(analyticsEvents);
29
37
  onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(e);
30
38
  },
31
39
  }), [
@@ -8,15 +8,26 @@ const models_1 = require("../../models");
8
8
  const components_1 = require("../../components");
9
9
  const ThemeValueContext_1 = require("../../context/theme/ThemeValueContext");
10
10
  const utils_2 = require("../../components/Media/Image/utils");
11
+ const hooks_1 = require("../../hooks");
12
+ const blockPositionContext_1 = require("../../context/blockPositionContext");
11
13
  const b = (0, utils_1.block)('quote');
12
14
  const Quote = (props) => {
13
15
  const { theme: textTheme = 'light', color, image, border = 'shadow', text, logo, author, url, buttonText, } = props;
14
16
  const { themeValue: theme } = (0, react_1.useContext)(ThemeValueContext_1.ThemeValueContext);
15
17
  const imageThemed = (0, utils_1.getThemedValue)(image, theme);
16
18
  const imageData = (0, utils_2.getMediaImage)(imageThemed);
19
+ const context = (0, react_1.useContext)(blockPositionContext_1.BlockPositionContext);
20
+ const defaultEvent = (0, react_1.useMemo)(() => ({
21
+ name: 'quote-button-click',
22
+ type: models_1.PredefinedEventTypes.Default,
23
+ context,
24
+ target: url,
25
+ }), [context, url]);
26
+ const handleAnalytics = (0, hooks_1.useAnalytics)(defaultEvent);
27
+ const handleButtonClick = (0, react_1.useCallback)(() => handleAnalytics(), [handleAnalytics]);
17
28
  const renderFooter = Boolean(author || url) && (react_1.default.createElement("div", { className: b('author-wrapper') },
18
29
  author && (react_1.default.createElement(components_1.Author, { className: b('author', { theme: textTheme }), author: author, type: models_1.AuthorType.Line })),
19
- url && buttonText && (react_1.default.createElement(uikit_1.Button, { view: "outlined", size: "xl", href: url, className: b('link-button', { theme: textTheme }) }, buttonText))));
30
+ url && buttonText && (react_1.default.createElement(uikit_1.Button, { view: "outlined", size: "xl", href: url, className: b('link-button', { theme: textTheme }), onClick: handleButtonClick }, buttonText))));
20
31
  return (react_1.default.createElement("div", { className: b({ theme: textTheme, border }), style: color ? { backgroundColor: color } : {} },
21
32
  react_1.default.createElement("div", { key: text, className: b('content-wrapper') },
22
33
  react_1.default.createElement("div", null,
@@ -64,6 +64,9 @@ export declare const Quote: {
64
64
  };
65
65
  };
66
66
  };
67
+ context: {
68
+ type: string;
69
+ };
67
70
  type: {};
68
71
  when: {};
69
72
  };
@@ -18,6 +18,8 @@ exports.Quote = {
18
18
  }, url: {
19
19
  type: 'string',
20
20
  pattern: schema_1.urlPattern,
21
- }, theme: common_1.ThemeProps, author: common_1.authorItem }),
21
+ }, theme: common_1.ThemeProps, author: common_1.authorItem, context: {
22
+ type: 'string',
23
+ } }),
22
24
  },
23
25
  };
@@ -2,9 +2,16 @@ import { ConstructorBlock } from '../models/constructor';
2
2
  import { TextSize, CustomConfig, PCShareSocialNetwork } from '../models';
3
3
  export declare function getHeaderTag(size: TextSize): "h1" | "h4" | "h2";
4
4
  export declare function getBlockKey(block: ConstructorBlock, index: number): string;
5
+ type GetBlockContextArgs = {
6
+ block: ConstructorBlock;
7
+ index: number;
8
+ parentContext?: string;
9
+ };
10
+ export declare function getBlockContext({ parentContext, block, index }: GetBlockContextArgs): string;
5
11
  export declare const getCustomBlockTypes: ({ blocks, headers }?: CustomConfig) => string[];
6
12
  export declare const getCustomItems: ({ blocks, headers, subBlocks }?: CustomConfig) => {
7
13
  [x: string]: any;
8
14
  };
9
15
  export declare const getCustomHeaderTypes: (customBlocks?: CustomConfig) => string[];
10
16
  export declare const getShareLink: (url: string, type: PCShareSocialNetwork, title?: string, text?: string) => string | undefined;
17
+ export {};
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getShareLink = exports.getCustomHeaderTypes = exports.getCustomItems = exports.getCustomBlockTypes = exports.getBlockKey = exports.getHeaderTag = void 0;
3
+ exports.getShareLink = exports.getCustomHeaderTypes = exports.getCustomItems = exports.getCustomBlockTypes = exports.getBlockContext = exports.getBlockKey = exports.getHeaderTag = void 0;
4
4
  const models_1 = require("../models");
5
5
  function getHeaderTag(size) {
6
6
  switch (size) {
@@ -18,6 +18,10 @@ function getBlockKey(block, index) {
18
18
  return `${block.type}-${index}`;
19
19
  }
20
20
  exports.getBlockKey = getBlockKey;
21
+ function getBlockContext({ parentContext = '', block, index }) {
22
+ return `${parentContext}${parentContext ? '_' : ''}${block.type}-${index}`;
23
+ }
24
+ exports.getBlockContext = getBlockContext;
21
25
  const getCustomBlockTypes = ({ blocks = {}, headers = {} } = {}) => [
22
26
  ...Object.keys(blocks),
23
27
  ...Object.keys(headers),
@@ -206,6 +206,9 @@ export declare const BannerCardProps: {
206
206
  };
207
207
  };
208
208
  };
209
+ context: {
210
+ type: string;
211
+ };
209
212
  };
210
213
  } | {
211
214
  type: string;
@@ -241,6 +244,9 @@ export declare const BannerCardProps: {
241
244
  };
242
245
  };
243
246
  };
247
+ context: {
248
+ type: string;
249
+ };
244
250
  };
245
251
  };
246
252
  })[];
@@ -264,6 +270,9 @@ export declare const BannerCardProps: {
264
270
  required: string[];
265
271
  };
266
272
  };
273
+ context: {
274
+ type: string;
275
+ };
267
276
  animated: {
268
277
  type: string;
269
278
  };
@@ -480,6 +489,9 @@ export declare const BannerBlock: {
480
489
  };
481
490
  };
482
491
  };
492
+ context: {
493
+ type: string;
494
+ };
483
495
  };
484
496
  } | {
485
497
  type: string;
@@ -515,6 +527,9 @@ export declare const BannerBlock: {
515
527
  };
516
528
  };
517
529
  };
530
+ context: {
531
+ type: string;
532
+ };
518
533
  };
519
534
  };
520
535
  })[];
@@ -538,6 +553,9 @@ export declare const BannerBlock: {
538
553
  required: string[];
539
554
  };
540
555
  };
556
+ context: {
557
+ type: string;
558
+ };
541
559
  animated: {
542
560
  type: string;
543
561
  };
@@ -755,6 +773,9 @@ export declare const BannerCard: {
755
773
  };
756
774
  };
757
775
  };
776
+ context: {
777
+ type: string;
778
+ };
758
779
  };
759
780
  } | {
760
781
  type: string;
@@ -790,6 +811,9 @@ export declare const BannerCard: {
790
811
  };
791
812
  };
792
813
  };
814
+ context: {
815
+ type: string;
816
+ };
793
817
  };
794
818
  };
795
819
  })[];
@@ -813,6 +837,9 @@ export declare const BannerCard: {
813
837
  required: string[];
814
838
  };
815
839
  };
840
+ context: {
841
+ type: string;
842
+ };
816
843
  animated: {
817
844
  type: string;
818
845
  };
@@ -17,7 +17,9 @@ export const BannerCardProps = {
17
17
  }), theme: ThemeProps, width: {
18
18
  type: 'string',
19
19
  enum: ['s', 'm', 'l'],
20
- }, button: ButtonBlock }),
20
+ }, button: ButtonBlock, context: {
21
+ type: 'string',
22
+ } }),
21
23
  };
22
24
  export const BannerBlock = {
23
25
  'banner-block': BannerCardProps,
@@ -66,6 +66,9 @@ export declare const CardLayoutProps: {
66
66
  resetPaddings: {
67
67
  type: string;
68
68
  };
69
+ context: {
70
+ type: string;
71
+ };
69
72
  type: {};
70
73
  when: {};
71
74
  };
@@ -139,6 +142,9 @@ export declare const CardLayoutBlock: {
139
142
  resetPaddings: {
140
143
  type: string;
141
144
  };
145
+ context: {
146
+ type: string;
147
+ };
142
148
  type: {};
143
149
  when: {};
144
150
  };