@gravity-ui/blog-constructor 6.4.2 → 6.4.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -158,6 +158,9 @@ export declare const Header: {
158
158
  ariaLabel: {
159
159
  type: string;
160
160
  };
161
+ contain: {
162
+ type: string;
163
+ };
161
164
  };
162
165
  } & {
163
166
  optionName: string;
@@ -359,11 +362,17 @@ export declare const Header: {
359
362
  ariaLabel: {
360
363
  type: string;
361
364
  };
365
+ contain: {
366
+ type: string;
367
+ };
362
368
  };
363
369
  };
364
370
  youtube: {
365
371
  type: string;
366
372
  };
373
+ videoIframe: {
374
+ type: string;
375
+ };
367
376
  parallax: {
368
377
  type: string;
369
378
  };
@@ -475,7 +484,8 @@ export declare const Header: {
475
484
  })[];
476
485
  };
477
486
  ratio: {
478
- type: string;
487
+ type: string[];
488
+ pattern: string;
479
489
  };
480
490
  iframe: {
481
491
  type: string;
@@ -160,11 +160,17 @@ export declare const Media: {
160
160
  ariaLabel: {
161
161
  type: string;
162
162
  };
163
+ contain: {
164
+ type: string;
165
+ };
163
166
  };
164
167
  };
165
168
  youtube: {
166
169
  type: string;
167
170
  };
171
+ videoIframe: {
172
+ type: string;
173
+ };
168
174
  parallax: {
169
175
  type: string;
170
176
  };
@@ -276,7 +282,8 @@ export declare const Media: {
276
282
  })[];
277
283
  };
278
284
  ratio: {
279
- type: string;
285
+ type: string[];
286
+ pattern: string;
280
287
  };
281
288
  iframe: {
282
289
  type: string;
@@ -10,7 +10,9 @@ const usePromptSignInProps_1 = require("../../components/PromptSignIn/hooks/useP
10
10
  const FeedContext_1 = require("../../contexts/FeedContext");
11
11
  const LikesContext_1 = require("../../contexts/LikesContext");
12
12
  const useExtendedComponentMap_1 = require("../../hooks/useExtendedComponentMap");
13
+ const SettingsContext_1 = require("../../contexts/SettingsContext");
13
14
  const BlogPage = ({ content, posts, tags, services, getPosts, metaData, custom, hasLikes = false, toggleLike, navigation, settings, pageCountForShowSupportButtons, isSignedInUser = false, onClickSignIn, }) => {
15
+ const { isAnimationEnabled } = (0, react_1.useContext)(SettingsContext_1.SettingsContext);
14
16
  const _a = (0, usePromptSignInProps_1.usePromptSignInProps)(onClickSignIn), { requireSignIn } = _a, promptSignInProps = tslib_1.__rest(_a, ["requireSignIn"]);
15
17
  const likesContextData = (0, react_1.useMemo)(() => ({ toggleLike, hasLikes, isSignedInUser, requireSignIn }), [toggleLike, hasLikes, isSignedInUser, requireSignIn]);
16
18
  const actualComponentMap = (0, useExtendedComponentMap_1.useExtendedComponentMap)(custom);
@@ -24,7 +26,7 @@ const BlogPage = ({ content, posts, tags, services, getPosts, metaData, custom,
24
26
  getPosts,
25
27
  pageCountForShowSupportButtons,
26
28
  } },
27
- react_1.default.createElement(page_constructor_1.PageConstructorProvider, Object.assign({}, settings),
29
+ react_1.default.createElement(page_constructor_1.PageConstructorProvider, Object.assign({}, settings, { projectSettings: Object.assign(Object.assign({}, ((settings === null || settings === void 0 ? void 0 : settings.projectSettings) || {})), { isAnimationEnabled }) }),
28
30
  metaData ? react_1.default.createElement(MetaWrapper_1.MetaWrapper, Object.assign({}, metaData)) : null,
29
31
  react_1.default.createElement(page_constructor_1.PageConstructor, { content: content, custom: actualComponentMap, navigation: navigation }))),
30
32
  react_1.default.createElement(PromptSignIn_1.PromptSignIn, Object.assign({}, promptSignInProps))));
@@ -11,7 +11,9 @@ const LikesContext_1 = require("../../contexts/LikesContext");
11
11
  const PostPageContext_1 = require("../../contexts/PostPageContext");
12
12
  const useExtendedComponentMap_1 = require("../../hooks/useExtendedComponentMap");
13
13
  const useLikes_1 = require("../../hooks/useLikes");
14
+ const SettingsContext_1 = require("../../contexts/SettingsContext");
14
15
  const BlogPostPage = ({ metaData, suggestedPosts, likes, content, post, settings, navigation, custom, shareOptions, isSignedInUser = false, onClickSignIn, }) => {
16
+ const { isAnimationEnabled } = (0, react_1.useContext)(SettingsContext_1.SettingsContext);
15
17
  const { hasUserLike, likesCount, handleLike } = (0, useLikes_1.useLikes)({
16
18
  hasLike: likes === null || likes === void 0 ? void 0 : likes.hasUserLike,
17
19
  count: likes === null || likes === void 0 ? void 0 : likes.likesCount,
@@ -39,7 +41,7 @@ const BlogPostPage = ({ metaData, suggestedPosts, likes, content, post, settings
39
41
  : undefined,
40
42
  shareOptions,
41
43
  } },
42
- react_1.default.createElement(page_constructor_1.PageConstructorProvider, Object.assign({}, settings),
44
+ react_1.default.createElement(page_constructor_1.PageConstructorProvider, Object.assign({}, settings, { projectSettings: Object.assign(Object.assign({}, ((settings === null || settings === void 0 ? void 0 : settings.projectSettings) || {})), { isAnimationEnabled }) }),
43
45
  metaData ? react_1.default.createElement(MetaWrapper_1.MetaWrapper, Object.assign({}, metaData)) : null,
44
46
  react_1.default.createElement(page_constructor_1.PageConstructor, { content: content, custom: actualComponentMap, navigation: navigation }))),
45
47
  react_1.default.createElement(PromptSignIn_1.PromptSignIn, Object.assign({}, promptSignInProps))));
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  export interface SettingsContextProps {
3
3
  addNavigationLinkForPages?: boolean;
4
+ isAnimationEnabled?: boolean;
4
5
  getBlogPath?: (pathPrefix: string) => string;
5
6
  }
6
7
  export declare const SettingsContext: React.Context<SettingsContextProps>;
@@ -166,6 +166,9 @@ export declare const schemasForCustom: {
166
166
  ariaLabel: {
167
167
  type: string;
168
168
  };
169
+ contain: {
170
+ type: string;
171
+ };
169
172
  };
170
173
  } & {
171
174
  optionName: string;
@@ -367,11 +370,17 @@ export declare const schemasForCustom: {
367
370
  ariaLabel: {
368
371
  type: string;
369
372
  };
373
+ contain: {
374
+ type: string;
375
+ };
370
376
  };
371
377
  };
372
378
  youtube: {
373
379
  type: string;
374
380
  };
381
+ videoIframe: {
382
+ type: string;
383
+ };
375
384
  parallax: {
376
385
  type: string;
377
386
  };
@@ -483,7 +492,8 @@ export declare const schemasForCustom: {
483
492
  })[];
484
493
  };
485
494
  ratio: {
486
- type: string;
495
+ type: string[];
496
+ pattern: string;
487
497
  };
488
498
  iframe: {
489
499
  type: string;
@@ -1551,11 +1561,17 @@ export declare const schemasForCustom: {
1551
1561
  ariaLabel: {
1552
1562
  type: string;
1553
1563
  };
1564
+ contain: {
1565
+ type: string;
1566
+ };
1554
1567
  };
1555
1568
  };
1556
1569
  youtube: {
1557
1570
  type: string;
1558
1571
  };
1572
+ videoIframe: {
1573
+ type: string;
1574
+ };
1559
1575
  parallax: {
1560
1576
  type: string;
1561
1577
  };
@@ -1667,7 +1683,8 @@ export declare const schemasForCustom: {
1667
1683
  })[];
1668
1684
  };
1669
1685
  ratio: {
1670
- type: string;
1686
+ type: string[];
1687
+ pattern: string;
1671
1688
  };
1672
1689
  iframe: {
1673
1690
  type: string;
@@ -158,6 +158,9 @@ export declare const Header: {
158
158
  ariaLabel: {
159
159
  type: string;
160
160
  };
161
+ contain: {
162
+ type: string;
163
+ };
161
164
  };
162
165
  } & {
163
166
  optionName: string;
@@ -359,11 +362,17 @@ export declare const Header: {
359
362
  ariaLabel: {
360
363
  type: string;
361
364
  };
365
+ contain: {
366
+ type: string;
367
+ };
362
368
  };
363
369
  };
364
370
  youtube: {
365
371
  type: string;
366
372
  };
373
+ videoIframe: {
374
+ type: string;
375
+ };
367
376
  parallax: {
368
377
  type: string;
369
378
  };
@@ -475,7 +484,8 @@ export declare const Header: {
475
484
  })[];
476
485
  };
477
486
  ratio: {
478
- type: string;
487
+ type: string[];
488
+ pattern: string;
479
489
  };
480
490
  iframe: {
481
491
  type: string;
@@ -160,11 +160,17 @@ export declare const Media: {
160
160
  ariaLabel: {
161
161
  type: string;
162
162
  };
163
+ contain: {
164
+ type: string;
165
+ };
163
166
  };
164
167
  };
165
168
  youtube: {
166
169
  type: string;
167
170
  };
171
+ videoIframe: {
172
+ type: string;
173
+ };
168
174
  parallax: {
169
175
  type: string;
170
176
  };
@@ -276,7 +282,8 @@ export declare const Media: {
276
282
  })[];
277
283
  };
278
284
  ratio: {
279
- type: string;
285
+ type: string[];
286
+ pattern: string;
280
287
  };
281
288
  iframe: {
282
289
  type: string;
@@ -1,5 +1,5 @@
1
1
  import { __rest } from "tslib";
2
- import React, { useMemo } from 'react';
2
+ import React, { useContext, useMemo } from 'react';
3
3
  import { PageConstructor, PageConstructorProvider, } from '@gravity-ui/page-constructor';
4
4
  import { MetaWrapper } from '../../components/MetaWrapper/MetaWrapper';
5
5
  import { PromptSignIn } from '../../components/PromptSignIn/PromptSignIn';
@@ -7,8 +7,10 @@ import { usePromptSignInProps } from '../../components/PromptSignIn/hooks/usePro
7
7
  import { FeedContext } from '../../contexts/FeedContext';
8
8
  import { LikesContext } from '../../contexts/LikesContext';
9
9
  import { useExtendedComponentMap } from '../../hooks/useExtendedComponentMap';
10
+ import { SettingsContext } from '../../contexts/SettingsContext';
10
11
  import './BlogPage.css';
11
12
  export const BlogPage = ({ content, posts, tags, services, getPosts, metaData, custom, hasLikes = false, toggleLike, navigation, settings, pageCountForShowSupportButtons, isSignedInUser = false, onClickSignIn, }) => {
13
+ const { isAnimationEnabled } = useContext(SettingsContext);
12
14
  const _a = usePromptSignInProps(onClickSignIn), { requireSignIn } = _a, promptSignInProps = __rest(_a, ["requireSignIn"]);
13
15
  const likesContextData = useMemo(() => ({ toggleLike, hasLikes, isSignedInUser, requireSignIn }), [toggleLike, hasLikes, isSignedInUser, requireSignIn]);
14
16
  const actualComponentMap = useExtendedComponentMap(custom);
@@ -22,7 +24,7 @@ export const BlogPage = ({ content, posts, tags, services, getPosts, metaData, c
22
24
  getPosts,
23
25
  pageCountForShowSupportButtons,
24
26
  } },
25
- React.createElement(PageConstructorProvider, Object.assign({}, settings),
27
+ React.createElement(PageConstructorProvider, Object.assign({}, settings, { projectSettings: Object.assign(Object.assign({}, ((settings === null || settings === void 0 ? void 0 : settings.projectSettings) || {})), { isAnimationEnabled }) }),
26
28
  metaData ? React.createElement(MetaWrapper, Object.assign({}, metaData)) : null,
27
29
  React.createElement(PageConstructor, { content: content, custom: actualComponentMap, navigation: navigation }))),
28
30
  React.createElement(PromptSignIn, Object.assign({}, promptSignInProps))));
@@ -1,5 +1,5 @@
1
1
  import { __rest } from "tslib";
2
- import React, { useMemo } from 'react';
2
+ import React, { useContext, useMemo } from 'react';
3
3
  import { PageConstructor, PageConstructorProvider, } from '@gravity-ui/page-constructor';
4
4
  import { MetaWrapper } from '../../components/MetaWrapper/MetaWrapper';
5
5
  import { PromptSignIn } from '../../components/PromptSignIn/PromptSignIn';
@@ -8,8 +8,10 @@ import { LikesContext } from '../../contexts/LikesContext';
8
8
  import { PostPageContext } from '../../contexts/PostPageContext';
9
9
  import { useExtendedComponentMap } from '../../hooks/useExtendedComponentMap';
10
10
  import { useLikes } from '../../hooks/useLikes';
11
+ import { SettingsContext } from '../../contexts/SettingsContext';
11
12
  import './BlogPostPage.css';
12
13
  export const BlogPostPage = ({ metaData, suggestedPosts, likes, content, post, settings, navigation, custom, shareOptions, isSignedInUser = false, onClickSignIn, }) => {
14
+ const { isAnimationEnabled } = useContext(SettingsContext);
13
15
  const { hasUserLike, likesCount, handleLike } = useLikes({
14
16
  hasLike: likes === null || likes === void 0 ? void 0 : likes.hasUserLike,
15
17
  count: likes === null || likes === void 0 ? void 0 : likes.likesCount,
@@ -37,7 +39,7 @@ export const BlogPostPage = ({ metaData, suggestedPosts, likes, content, post, s
37
39
  : undefined,
38
40
  shareOptions,
39
41
  } },
40
- React.createElement(PageConstructorProvider, Object.assign({}, settings),
42
+ React.createElement(PageConstructorProvider, Object.assign({}, settings, { projectSettings: Object.assign(Object.assign({}, ((settings === null || settings === void 0 ? void 0 : settings.projectSettings) || {})), { isAnimationEnabled }) }),
41
43
  metaData ? React.createElement(MetaWrapper, Object.assign({}, metaData)) : null,
42
44
  React.createElement(PageConstructor, { content: content, custom: actualComponentMap, navigation: navigation }))),
43
45
  React.createElement(PromptSignIn, Object.assign({}, promptSignInProps))));
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  export interface SettingsContextProps {
3
3
  addNavigationLinkForPages?: boolean;
4
+ isAnimationEnabled?: boolean;
4
5
  getBlogPath?: (pathPrefix: string) => string;
5
6
  }
6
7
  export declare const SettingsContext: React.Context<SettingsContextProps>;
@@ -166,6 +166,9 @@ export declare const schemasForCustom: {
166
166
  ariaLabel: {
167
167
  type: string;
168
168
  };
169
+ contain: {
170
+ type: string;
171
+ };
169
172
  };
170
173
  } & {
171
174
  optionName: string;
@@ -367,11 +370,17 @@ export declare const schemasForCustom: {
367
370
  ariaLabel: {
368
371
  type: string;
369
372
  };
373
+ contain: {
374
+ type: string;
375
+ };
370
376
  };
371
377
  };
372
378
  youtube: {
373
379
  type: string;
374
380
  };
381
+ videoIframe: {
382
+ type: string;
383
+ };
375
384
  parallax: {
376
385
  type: string;
377
386
  };
@@ -483,7 +492,8 @@ export declare const schemasForCustom: {
483
492
  })[];
484
493
  };
485
494
  ratio: {
486
- type: string;
495
+ type: string[];
496
+ pattern: string;
487
497
  };
488
498
  iframe: {
489
499
  type: string;
@@ -1551,11 +1561,17 @@ export declare const schemasForCustom: {
1551
1561
  ariaLabel: {
1552
1562
  type: string;
1553
1563
  };
1564
+ contain: {
1565
+ type: string;
1566
+ };
1554
1567
  };
1555
1568
  };
1556
1569
  youtube: {
1557
1570
  type: string;
1558
1571
  };
1572
+ videoIframe: {
1573
+ type: string;
1574
+ };
1559
1575
  parallax: {
1560
1576
  type: string;
1561
1577
  };
@@ -1667,7 +1683,8 @@ export declare const schemasForCustom: {
1667
1683
  })[];
1668
1684
  };
1669
1685
  ratio: {
1670
- type: string;
1686
+ type: string[];
1687
+ pattern: string;
1671
1688
  };
1672
1689
  iframe: {
1673
1690
  type: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/blog-constructor",
3
- "version": "6.4.2",
3
+ "version": "6.4.3",
4
4
  "description": "Gravity UI Blog Constructor",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -56,7 +56,14 @@
56
56
  "svgo:all": "svgo --config svgo.config.js -r -f assets",
57
57
  "test": "jest --maxWorkers=50%",
58
58
  "test:coverage": "jest --coverage",
59
- "test:watch": "jest --watchAll --maxWorkers=25%"
59
+ "test:watch": "jest --watchAll --maxWorkers=25%",
60
+ "playwright": "playwright test --config=playwright/playwright.config.ts",
61
+ "playwright:update": "npm run playwright -- -u",
62
+ "playwright:clear-cache": "rm -rf ./playwright/.cache",
63
+ "playwright:docker": "./scripts/playwright-docker.sh 'npm run playwright'",
64
+ "playwright:docker:update": "./scripts/playwright-docker.sh 'npm run playwright:update'",
65
+ "playwright:docker:clear-cache": "./scripts/playwright-docker.sh clear-cache",
66
+ "playwright:install": "playwright install --with-deps"
60
67
  },
61
68
  "dependencies": {
62
69
  "@bem-react/classname": "^1.6.0",
@@ -82,12 +89,14 @@
82
89
  "@commitlint/config-conventional": "^17.4.3",
83
90
  "@diplodoc/transform": "^4.10.8",
84
91
  "@gravity-ui/eslint-config": "^3.1.1",
85
- "@gravity-ui/page-constructor": "^5.18.0",
92
+ "@gravity-ui/page-constructor": "^5.27.0",
86
93
  "@gravity-ui/prettier-config": "^1.1.0",
87
94
  "@gravity-ui/stylelint-config": "^4.0.1",
88
95
  "@gravity-ui/tsconfig": "^1.0.0",
89
96
  "@gravity-ui/uikit": "^6.22.0",
90
97
  "@jest/environment": "^29.7.0",
98
+ "@playwright/experimental-ct-react": "^1.45.3",
99
+ "@playwright/test": "^1.45.3",
91
100
  "@storybook/addon-essentials": "^8.0.5",
92
101
  "@storybook/addon-mdx-gfm": "^8.0.5",
93
102
  "@storybook/addon-webpack5-compiler-babel": "^3.0.3",
@@ -106,6 +115,7 @@
106
115
  "@types/react-helmet": "^6.1.5",
107
116
  "@types/ua-parser-js": "^0.7.36",
108
117
  "@types/uuid": "^9.0.7",
118
+ "@vitejs/plugin-react": "^4.3.1",
109
119
  "eslint": "^8.34.0",
110
120
  "eslint-plugin-no-not-accumulator-reassign": "^0.1.0",
111
121
  "eslint-plugin-testing-library": "^5.9.1",
@@ -132,7 +142,9 @@
132
142
  "storybook": "^8.0.5",
133
143
  "stylelint": "^15.11.0",
134
144
  "ts-jest": "^29.0.5",
135
- "typescript": "^4.9.3"
145
+ "typescript": "^4.9.3",
146
+ "vite-plugin-commonjs": "^0.10.3",
147
+ "vite-plugin-svgr": "^4.2.0"
136
148
  },
137
149
  "lint-staged": {
138
150
  "*.{css,scss}": [
@@ -1,7 +1,7 @@
1
1
  import { MarkdownItPluginCb } from '@diplodoc/transform/lib/plugins/typings';
2
2
  import { Lang } from '@gravity-ui/uikit';
3
3
  type TypographyConfigType = {
4
- [x: string]: Record<string, unknown>;
4
+ [x: string]: Record<string, unknown> | Record<string, unknown>[];
5
5
  };
6
6
  type TransformPageContentPropsType = {
7
7
  content: string;