@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
@@ -0,0 +1,28 @@
1
+ import { TitleProps } from '../models';
2
+ import { Parser, Transformer, TransformerRaw, typografTransformer, yfmTransformer } from './common';
3
+ export declare const blockHeaderTransformer: ({
4
+ fields: string[];
5
+ transformer: typeof typografTransformer;
6
+ parser: (transformer: Transformer, title: TitleProps | string) => string | {
7
+ text: string;
8
+ navTitle?: string | undefined;
9
+ anchor?: string | undefined;
10
+ justify?: import("../models").Justify | undefined;
11
+ textSize?: import("../models").TextSize | undefined;
12
+ url?: string | undefined;
13
+ custom?: import("react").ReactNode;
14
+ onClick?: (() => void) | undefined;
15
+ };
16
+ } | {
17
+ fields: string[];
18
+ transformer: typeof yfmTransformer;
19
+ parser?: undefined;
20
+ })[];
21
+ interface BlockConfig {
22
+ transformer: TransformerRaw;
23
+ fields?: string[];
24
+ parser?: Parser;
25
+ }
26
+ export type BlocksConfig = Record<string, BlockConfig | BlockConfig[]>;
27
+ export declare const config: BlocksConfig;
28
+ export {};
@@ -1,26 +1,6 @@
1
1
  import { __rest } from "tslib";
2
- /* eslint-disable no-param-reassign */
3
- /* eslint-disable no-not-accumulator-reassign/no-not-accumulator-reassign */
4
- import _ from 'lodash';
5
2
  import { BlockType, SubBlockType, } from '../models';
6
- import { fullTransform, typografToHTML } from './utils';
7
- export const createItemsParser = (fields) => (transformer, items) => items.map((item) => {
8
- if (!item) {
9
- return item;
10
- }
11
- else if (typeof item === 'string') {
12
- return transformer(item);
13
- }
14
- else {
15
- return Object.assign(Object.assign({}, item), fields.reduce((acc, fieldName) => {
16
- const result = Object.assign({}, acc);
17
- if (item[fieldName]) {
18
- result[fieldName] = transformer(item[fieldName]);
19
- }
20
- return result;
21
- }, {}));
22
- }
23
- });
3
+ import { createItemsParser, typografTransformer, yfmTransformer, } from './common';
24
4
  function parseTableBlock(transformer, content) {
25
5
  const legend = content === null || content === void 0 ? void 0 : content.legend;
26
6
  return Object.assign(Object.assign({}, (content || {})), { legend: legend && legend.map((string) => transformer(string)) });
@@ -45,6 +25,7 @@ const parseItemsTitle = (transformer, items) => items.map((_a) => {
45
25
  });
46
26
  function parsePriceDetailedBlock(transformer, block) {
47
27
  const { priceType } = block;
28
+ /* eslint-disable no-not-accumulator-reassign/no-not-accumulator-reassign */
48
29
  block.items = block.items.map((item) => {
49
30
  const { description, items: details = [] } = item;
50
31
  if (priceType === 'marked-list') {
@@ -62,35 +43,32 @@ function parsePriceDetailedBlock(transformer, block) {
62
43
  item.description = transformer(description);
63
44
  return item;
64
45
  });
46
+ /* eslint-enable no-not-accumulator-reassign/no-not-accumulator-reassign */
65
47
  return block;
66
48
  }
67
49
  const parseContentLayout = (transformer, content) => {
68
50
  if (content) {
69
51
  const { text, additionalInfo } = content;
52
+ /* eslint-disable no-not-accumulator-reassign/no-not-accumulator-reassign */
70
53
  if (text) {
71
54
  content.text = transformer(text);
72
55
  }
73
56
  if (additionalInfo) {
74
57
  content.additionalInfo = transformer(additionalInfo);
75
58
  }
59
+ /* eslint-enable no-not-accumulator-reassign/no-not-accumulator-reassign */
76
60
  }
77
61
  return content;
78
62
  };
79
63
  function parseContentLayoutTitle(transformer, content) {
80
64
  if (content === null || content === void 0 ? void 0 : content.title) {
81
65
  const { title } = content;
66
+ // eslint-disable-next-line no-not-accumulator-reassign/no-not-accumulator-reassign
82
67
  content.title = title && parseTitle(transformer, title);
83
68
  }
84
69
  return content;
85
70
  }
86
- export function yfmTransformer(lang, content) {
87
- const { html } = fullTransform(content, { lang });
88
- return html;
89
- }
90
- export function typografTransformer(lang, content) {
91
- return typografToHTML(content, lang);
92
- }
93
- const blockHeaderTransfomer = [
71
+ export const blockHeaderTransformer = [
94
72
  {
95
73
  fields: ['title'],
96
74
  transformer: typografTransformer,
@@ -101,11 +79,7 @@ const blockHeaderTransfomer = [
101
79
  transformer: yfmTransformer,
102
80
  },
103
81
  ];
104
- const config = {
105
- [SubBlockType.Partner]: {
106
- fields: ['text'],
107
- transformer: typografTransformer,
108
- },
82
+ export const config = {
109
83
  [SubBlockType.BasicCard]: [
110
84
  {
111
85
  fields: ['title'],
@@ -116,10 +90,6 @@ const config = {
116
90
  transformer: yfmTransformer,
117
91
  },
118
92
  ],
119
- [SubBlockType.TutorialCard]: {
120
- fields: ['text', 'title'],
121
- transformer: typografTransformer,
122
- },
123
93
  [SubBlockType.BackgroundCard]: [
124
94
  {
125
95
  fields: ['text', 'additionalInfo'],
@@ -130,16 +100,6 @@ const config = {
130
100
  transformer: typografTransformer,
131
101
  },
132
102
  ],
133
- [SubBlockType.CardWithImage]: [
134
- {
135
- fields: ['description', 'additionalInfo'],
136
- transformer: yfmTransformer,
137
- },
138
- {
139
- fields: ['title'],
140
- transformer: typografTransformer,
141
- },
142
- ],
143
103
  [SubBlockType.LayoutItem]: [
144
104
  {
145
105
  fields: ['content'],
@@ -162,7 +122,7 @@ const config = {
162
122
  transformer: typografTransformer,
163
123
  },
164
124
  [BlockType.ExtendedFeaturesBlock]: [
165
- ...blockHeaderTransfomer,
125
+ ...blockHeaderTransformer,
166
126
  {
167
127
  fields: ['items'],
168
128
  transformer: typografTransformer,
@@ -175,14 +135,14 @@ const config = {
175
135
  },
176
136
  ],
177
137
  [BlockType.PromoFeaturesBlock]: [
178
- ...blockHeaderTransfomer,
138
+ ...blockHeaderTransformer,
179
139
  {
180
140
  fields: ['items'],
181
141
  transformer: yfmTransformer,
182
142
  parser: parsePromoFeatures,
183
143
  },
184
144
  ],
185
- [BlockType.SliderBlock]: blockHeaderTransfomer,
145
+ [BlockType.SliderBlock]: blockHeaderTransformer,
186
146
  [BlockType.QuestionsBlock]: [
187
147
  {
188
148
  fields: ['title'],
@@ -219,21 +179,21 @@ const config = {
219
179
  },
220
180
  ],
221
181
  [BlockType.MediaBlock]: [
222
- ...blockHeaderTransfomer,
182
+ ...blockHeaderTransformer,
223
183
  {
224
184
  fields: ['title', 'additionalInfo'],
225
185
  transformer: yfmTransformer,
226
186
  },
227
187
  ],
228
188
  [BlockType.MapBlock]: [
229
- ...blockHeaderTransfomer,
189
+ ...blockHeaderTransformer,
230
190
  {
231
191
  fields: ['title', 'additionalInfo'],
232
192
  transformer: yfmTransformer,
233
193
  },
234
194
  ],
235
195
  [BlockType.TabsBlock]: [
236
- ...blockHeaderTransfomer,
196
+ ...blockHeaderTransformer,
237
197
  {
238
198
  fields: ['items'],
239
199
  transformer: yfmTransformer,
@@ -264,17 +224,6 @@ const config = {
264
224
  parser: createItemsParser(['description']),
265
225
  },
266
226
  ],
267
- [BlockType.SimpleBlock]: [
268
- {
269
- fields: ['title'],
270
- transformer: typografTransformer,
271
- parser: parseTitle,
272
- },
273
- {
274
- fields: ['description'],
275
- transformer: yfmTransformer,
276
- },
277
- ],
278
227
  [SubBlockType.PriceDetailed]: [
279
228
  {
280
229
  transformer: yfmTransformer,
@@ -310,17 +259,6 @@ const config = {
310
259
  parser: parseTitle,
311
260
  },
312
261
  ],
313
- [BlockType.PreviewBlock]: [
314
- {
315
- fields: ['description'],
316
- transformer: yfmTransformer,
317
- },
318
- {
319
- fields: ['title'],
320
- transformer: typografTransformer,
321
- parser: parseTitle,
322
- },
323
- ],
324
262
  [BlockType.InfoBlock]: [
325
263
  {
326
264
  fields: ['rightContent', 'leftContent'],
@@ -339,7 +277,7 @@ const config = {
339
277
  transformer: typografTransformer,
340
278
  },
341
279
  ],
342
- [BlockType.CardLayoutBlock]: blockHeaderTransfomer,
280
+ [BlockType.CardLayoutBlock]: blockHeaderTransformer,
343
281
  [BlockType.IconsBlock]: [
344
282
  {
345
283
  fields: ['title'],
@@ -347,50 +285,4 @@ const config = {
347
285
  parser: parseTitle,
348
286
  },
349
287
  ],
350
- [BlockType.LinkTableBlock]: blockHeaderTransfomer,
351
288
  };
352
- function addRandomOrder(block) {
353
- if (block) {
354
- if ('randomOrder' in block && block.randomOrder && 'children' in block && block.children) {
355
- block.children = _.shuffle(block.children);
356
- }
357
- }
358
- }
359
- function transformBlock(lang, blocksConfig, block) {
360
- const blockConfig = blocksConfig[block.type];
361
- addRandomOrder(block);
362
- if (blockConfig) {
363
- const configs = Array.isArray(blockConfig) ? blockConfig : [blockConfig];
364
- configs.forEach((transformConfig) => {
365
- const { fields, transformer: transformerRaw, parser } = transformConfig;
366
- const transformer = transformerRaw.bind(null, lang);
367
- if (fields) {
368
- fields.forEach((field) => {
369
- if (block[field]) {
370
- if (parser) {
371
- block[field] = parser(transformer, block[field]);
372
- }
373
- else if (typeof block[field] === 'string') {
374
- block[field] = transformer(block[field]);
375
- }
376
- }
377
- });
378
- }
379
- else if (parser) {
380
- parser(transformer, block);
381
- }
382
- });
383
- }
384
- if ('children' in block && block.children) {
385
- transformBlocks(block.children, lang, blocksConfig);
386
- }
387
- }
388
- export function transformBlocks(blocks, lang, customConfig = {}) {
389
- const fullConfig = Object.assign(Object.assign({}, config), customConfig);
390
- blocks.forEach(transformBlock.bind(null, lang, fullConfig));
391
- }
392
- export function transformFootnotes(footnotes, lang) {
393
- return footnotes
394
- .map((footnote) => fullTransform(footnote, { path: __dirname, lang, allowHTML: true }).html)
395
- .filter(Boolean);
396
- }
@@ -1,2 +1,4 @@
1
1
  export * from './utils';
2
- export * from './blocks';
2
+ export * from './config';
3
+ export * from './common';
4
+ export * from './transformers';
@@ -1,2 +1,4 @@
1
1
  export * from './utils';
2
- export * from './blocks';
2
+ export * from './config';
3
+ export * from './common';
4
+ export * from './transformers';
@@ -0,0 +1,16 @@
1
+ import { ConstructorBlock } from '../models/constructor';
2
+ import { Lang } from '../utils/configure';
3
+ export type ContentTransformerProps = {
4
+ content: {
5
+ blocks?: ConstructorBlock[];
6
+ footnotes?: string[];
7
+ };
8
+ options: {
9
+ lang: Lang;
10
+ customConfig?: {};
11
+ };
12
+ };
13
+ export declare const contentTransformer: ({ content, options }: ContentTransformerProps) => {
14
+ blocks: ConstructorBlock[];
15
+ footnotes: string[];
16
+ };
@@ -0,0 +1,56 @@
1
+ import _ from 'lodash';
2
+ import { config } from './config';
3
+ import { fullTransform } from './utils';
4
+ function transformBlocks(blocks, lang, customConfig = {}) {
5
+ const fullConfig = Object.assign(Object.assign({}, config), customConfig);
6
+ const clonedBlocks = _.cloneDeep(blocks);
7
+ return clonedBlocks.map((block) => transformBlock(lang, fullConfig, block));
8
+ }
9
+ function transformBlock(lang, blocksConfig, block) {
10
+ const blockConfig = blocksConfig[block.type];
11
+ if (block) {
12
+ if ('randomOrder' in block && block.randomOrder && 'children' in block && block.children) {
13
+ // eslint-disable-next-line no-not-accumulator-reassign/no-not-accumulator-reassign, no-param-reassign
14
+ block.children = _.shuffle(block.children);
15
+ }
16
+ }
17
+ if (blockConfig) {
18
+ const configs = Array.isArray(blockConfig) ? blockConfig : [blockConfig];
19
+ configs.forEach((transformConfig) => {
20
+ const { fields, transformer: transformerRaw, parser } = transformConfig;
21
+ const transformer = transformerRaw.bind(null, lang);
22
+ if (fields) {
23
+ fields.forEach((field) => {
24
+ if (block[field]) {
25
+ if (parser) {
26
+ // eslint-disable-next-line no-not-accumulator-reassign/no-not-accumulator-reassign, no-param-reassign
27
+ block[field] = parser(transformer, block[field]);
28
+ }
29
+ else if (typeof block[field] === 'string') {
30
+ // eslint-disable-next-line no-not-accumulator-reassign/no-not-accumulator-reassign, no-param-reassign
31
+ block[field] = transformer(block[field]);
32
+ }
33
+ }
34
+ });
35
+ }
36
+ else if (parser) {
37
+ parser(transformer, block);
38
+ }
39
+ });
40
+ }
41
+ if ('children' in block && block.children) {
42
+ // eslint-disable-next-line no-not-accumulator-reassign/no-not-accumulator-reassign, no-param-reassign
43
+ block.children = transformBlocks(block.children, lang, blocksConfig);
44
+ }
45
+ return block;
46
+ }
47
+ export const contentTransformer = ({ content, options }) => {
48
+ const { lang, customConfig = {} } = options;
49
+ const { blocks = [], footnotes = [] } = content;
50
+ const transformedBlocks = transformBlocks(blocks, lang, customConfig);
51
+ const transformedFootnotes = (footnotes === null || footnotes === void 0 ? void 0 : footnotes.map((footnote) => fullTransform(footnote, { path: __dirname, lang, allowHTML: true }).html).filter(Boolean)) || [];
52
+ return {
53
+ blocks: transformedBlocks,
54
+ footnotes: transformedFootnotes,
55
+ };
56
+ };
@@ -1,7 +1,6 @@
1
1
  export * from './common';
2
2
  export * from './analytics';
3
3
  export * from './blocks';
4
- export * from './scroll';
5
4
  export * from './url';
6
5
  export * from './cn';
7
6
  export * from './url';
@@ -1,7 +1,6 @@
1
1
  export * from './common';
2
2
  export * from './analytics';
3
3
  export * from './blocks';
4
- export * from './scroll';
5
4
  export * from './url';
6
5
  export * from './cn';
7
6
  export * from './url';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/page-constructor",
3
- "version": "2.18.0",
3
+ "version": "3.0.0-alpha.1",
4
4
  "description": "Gravity UI Page Constructor",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -138,5 +138,8 @@
138
138
  "*.{json,yaml,yml,md}": [
139
139
  "prettier --write"
140
140
  ]
141
+ },
142
+ "publishConfig": {
143
+ "tag": "alpha"
141
144
  }
142
145
  }
@@ -2,7 +2,7 @@
2
2
  import { ButtonSize } from '@gravity-ui/uikit';
3
3
  import { GridColumnSize, GridColumnSizesType } from '../../grid/types';
4
4
  import { ThemeSupporting } from '../../utils';
5
- import { AnchorProps, Animatable, BackgroundImageProps, BlockHeaderProps, ButtonProps, ContentSize, ContentTextSize, ContentTheme, FileLinkProps, HeaderBreadCrumbsProps, HeaderImageSize, HeaderOffset, HeaderWidth, ImageDeviceProps, Justify, LegendTableMarkerType, LinkProps, LinkTheme, MapProps, MediaDirection, MediaProps, PreviewItemProps, PreviewRatioMediaContent, TextSize, TextTheme, ThemedImage, ThemedMediaProps, ThemedMediaVideoProps, TitleBaseProps, TitleProps } from './common';
5
+ import { AnchorProps, Animatable, BackgroundImageProps, BlockHeaderProps, ButtonProps, ContentSize, ContentTextSize, ContentTheme, FileLinkProps, HeaderBreadCrumbsProps, HeaderImageSize, HeaderOffset, HeaderWidth, ImageDeviceProps, Justify, LegendTableMarkerType, LinkProps, MapProps, MediaDirection, MediaProps, TextSize, TextTheme, ThemedImage, ThemedMediaProps, ThemedMediaVideoProps, TitleBaseProps, TitleProps } from './common';
6
6
  import { BannerCardProps, SubBlock, SubBlockModels } from './sub-blocks';
7
7
  export declare enum BlockType {
8
8
  PromoFeaturesBlock = "promo-features-block",
@@ -14,14 +14,10 @@ export declare enum BlockType {
14
14
  BannerBlock = "banner-block",
15
15
  CompaniesBlock = "companies-block",
16
16
  MediaBlock = "media-block",
17
- PreviewBlock = "preview-block",
18
17
  InfoBlock = "info-block",
19
- SecurityBlock = "security-block",
20
18
  TableBlock = "table-block",
21
19
  TabsBlock = "tabs-block",
22
- SimpleBlock = "simple-block",
23
20
  HeaderSliderBlock = "header-slider-block",
24
- LinkTableBlock = "link-table-block",
25
21
  HeaderBlock = "header-block",
26
22
  IconsBlock = "icons-block",
27
23
  CardLayoutBlock = "card-layout-block",
@@ -115,10 +111,6 @@ export interface HeaderBlockProps {
115
111
  status?: JSX.Element;
116
112
  }
117
113
  export type CalculatorProps = Animatable;
118
- export interface SimpleBlockProps extends Animatable, Childable {
119
- title: TitleBaseProps;
120
- description: string;
121
- }
122
114
  export interface ExtendedFeaturesItem extends Omit<ContentBlockProps, 'theme' | 'centered' | 'colSizes' | 'size' | 'title'> {
123
115
  title: string;
124
116
  label?: string;
@@ -181,15 +173,6 @@ export interface MediaBlockProps extends MediaBaseBlockProps {
181
173
  export interface MapBlockProps extends MediaBaseBlockProps {
182
174
  map: MapProps;
183
175
  }
184
- export interface PreviewBlockProps extends Animatable {
185
- title: string;
186
- items: PreviewItemProps[];
187
- description?: string;
188
- direction?: MediaDirection;
189
- ratioMediaContent?: PreviewRatioMediaContent;
190
- stopVideo?: boolean;
191
- showImmediately?: boolean;
192
- }
193
176
  export interface InfoBlockProps {
194
177
  theme?: TextTheme;
195
178
  backgroundColor?: ThemeSupporting<string>;
@@ -204,21 +187,6 @@ export interface InfoBlockProps {
204
187
  leftContent?: Omit<ContentBlockProps, 'colSizes' | 'theme' | 'size'>;
205
188
  rightContent?: Omit<ContentBlockProps, 'colSizes' | 'theme' | 'size'>;
206
189
  }
207
- export interface SecurityBlockPoint {
208
- img: string;
209
- text: string;
210
- link: {
211
- text: string;
212
- url: string;
213
- };
214
- }
215
- export interface SecurityBlockProps extends Animatable {
216
- theme?: TextTheme;
217
- backgroundColor?: string;
218
- title: string;
219
- points?: SecurityBlockPoint[];
220
- media: MediaProps;
221
- }
222
190
  export interface TableProps {
223
191
  content: string[][];
224
192
  legend?: string[];
@@ -245,10 +213,6 @@ export interface TabsBlockProps extends BlockHeaderProps, Animatable {
245
213
  direction?: MediaDirection;
246
214
  items: TabsBlockItem[];
247
215
  }
248
- export interface LinkTableBlockProps extends BlockHeaderProps {
249
- items: LinkProps[][];
250
- linkTheme?: LinkTheme;
251
- }
252
216
  export interface CardLayoutBlockProps extends Childable, Animatable, LoadableChildren {
253
217
  title: TitleProps | string;
254
218
  description?: string;
@@ -347,27 +311,15 @@ export type MediaBlockModel = {
347
311
  export type MapBlockModel = {
348
312
  type: BlockType.MapBlock;
349
313
  } & MapBlockProps;
350
- export type PreviewBlockModel = {
351
- type: BlockType.PreviewBlock;
352
- } & PreviewBlockProps;
353
314
  export type InfoBlockModel = {
354
315
  type: BlockType.InfoBlock;
355
316
  } & InfoBlockProps;
356
- export type SecurityBlockModel = {
357
- type: BlockType.SecurityBlock;
358
- } & SecurityBlockProps;
359
317
  export type TableBlockModel = {
360
318
  type: BlockType.TableBlock;
361
319
  } & TableBlockProps;
362
320
  export type TabsBlockModel = {
363
321
  type: BlockType.TabsBlock;
364
322
  } & TabsBlockProps;
365
- export type SimpleBlockModel = {
366
- type: BlockType.SimpleBlock;
367
- } & SimpleBlockProps;
368
- export type LinkTableBlockModel = {
369
- type: BlockType.LinkTableBlock;
370
- } & LinkTableBlockProps;
371
323
  export type CardLayoutBlockModel = {
372
324
  type: BlockType.CardLayoutBlock;
373
325
  } & CardLayoutBlockProps;
@@ -386,6 +338,6 @@ export type ContentLayoutBlockModel = {
386
338
  export type ShareBLockModel = {
387
339
  type: BlockType.ShareBlock;
388
340
  } & ShareBlockProps;
389
- type BlockModels = SliderBlockModel | ServiceDemoBlockModel | ExtendedFeaturesBlockModel | PromoFeaturesBlockModel | QuestionsBlockModel | CalculatorBlockModel | BannerBlockModel | CompaniesBlockModel | MediaBlockModel | MapBlockModel | InfoBlockModel | SecurityBlockModel | TableBlockModel | TabsBlockModel | SimpleBlockModel | LinkTableBlockModel | HeaderBlockModel | PreviewBlockModel | IconsBlockModel | HeaderSliderBlockModel | CardLayoutBlockModel | ContentLayoutBlockModel | ShareBLockModel | FilterBlockModel;
341
+ type BlockModels = SliderBlockModel | ServiceDemoBlockModel | ExtendedFeaturesBlockModel | PromoFeaturesBlockModel | QuestionsBlockModel | CalculatorBlockModel | BannerBlockModel | CompaniesBlockModel | MediaBlockModel | MapBlockModel | InfoBlockModel | TableBlockModel | TabsBlockModel | HeaderBlockModel | IconsBlockModel | HeaderSliderBlockModel | CardLayoutBlockModel | ContentLayoutBlockModel | ShareBLockModel | FilterBlockModel;
390
342
  export type Block = BlockModels & BlockBaseProps;
391
343
  export {};
@@ -12,14 +12,10 @@ var BlockType;
12
12
  BlockType["BannerBlock"] = "banner-block";
13
13
  BlockType["CompaniesBlock"] = "companies-block";
14
14
  BlockType["MediaBlock"] = "media-block";
15
- BlockType["PreviewBlock"] = "preview-block";
16
15
  BlockType["InfoBlock"] = "info-block";
17
- BlockType["SecurityBlock"] = "security-block";
18
16
  BlockType["TableBlock"] = "table-block";
19
17
  BlockType["TabsBlock"] = "tabs-block";
20
- BlockType["SimpleBlock"] = "simple-block";
21
18
  BlockType["HeaderSliderBlock"] = "header-slider-block";
22
- BlockType["LinkTableBlock"] = "link-table-block";
23
19
  BlockType["HeaderBlock"] = "header-block";
24
20
  BlockType["IconsBlock"] = "icons-block";
25
21
  BlockType["CardLayoutBlock"] = "card-layout-block";
@@ -17,10 +17,6 @@ export declare enum PriceLabelColor {
17
17
  PURPLE = "purple",
18
18
  RED = "red"
19
19
  }
20
- export declare enum PreviewItemType {
21
- Video = "video",
22
- Image = "image"
23
- }
24
20
  export declare enum PlayButtonType {
25
21
  Default = "default",
26
22
  Text = "text"
@@ -49,7 +45,6 @@ export type LegendTableMarkerType = 'disk';
49
45
  export type LinkTheme = 'file-link' | 'normal' | 'back' | 'underline';
50
46
  export type MediaDirection = 'media-content' | 'content-media';
51
47
  export type PriceDescriptionColor = 'cornflower' | 'black';
52
- export type PreviewRatioMediaContent = '2-1' | '1-1';
53
48
  export type ContentSize = 's' | 'l';
54
49
  export type ContentTextSize = 's' | 'm' | 'l';
55
50
  export type ContentTheme = 'default' | 'dark' | 'light';
@@ -254,15 +249,6 @@ export interface HeaderBreadCrumbsProps extends ClassNameProps {
254
249
  metrikaGoals?: MetrikaGoal;
255
250
  pixelEvents?: ButtonPixel;
256
251
  }
257
- export interface PreviewContentItemProps {
258
- title: string;
259
- description?: string;
260
- }
261
- export interface PreviewItemProps {
262
- type: PreviewItemType;
263
- media: ThemedMediaProps;
264
- content: PreviewContentItemProps;
265
- }
266
252
  export interface TitleProps extends Justifyable, TitleBaseProps {
267
253
  navTitle?: string;
268
254
  anchor?: string;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MediaVideoControlsType = exports.MediaVideoType = exports.PlayButtonThemes = exports.PlayButtonType = exports.PreviewItemType = exports.PriceLabelColor = exports.PriceDetailsType = exports.AuthorType = void 0;
3
+ exports.MediaVideoControlsType = exports.MediaVideoType = exports.PlayButtonThemes = exports.PlayButtonType = exports.PriceLabelColor = exports.PriceDetailsType = exports.AuthorType = void 0;
4
4
  // enums
5
5
  var AuthorType;
6
6
  (function (AuthorType) {
@@ -20,11 +20,6 @@ var PriceLabelColor;
20
20
  PriceLabelColor["PURPLE"] = "purple";
21
21
  PriceLabelColor["RED"] = "red";
22
22
  })(PriceLabelColor = exports.PriceLabelColor || (exports.PriceLabelColor = {}));
23
- var PreviewItemType;
24
- (function (PreviewItemType) {
25
- PreviewItemType["Video"] = "video";
26
- PreviewItemType["Image"] = "image";
27
- })(PreviewItemType = exports.PreviewItemType || (exports.PreviewItemType = {}));
28
23
  var PlayButtonType;
29
24
  (function (PlayButtonType) {
30
25
  PlayButtonType["Default"] = "default";