@gravity-ui/blog-constructor 5.11.0 → 5.12.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  import React, { SyntheticEvent } from 'react';
2
- import { NavigationData, PageConstructorProviderProps, PageContent } from '@gravity-ui/page-constructor';
2
+ import { CustomConfig, NavigationData, PageConstructorProviderProps, PageContent } from '@gravity-ui/page-constructor';
3
3
  import { GetPostsType, MetaProps, PostsProps, Service, SetQueryType, Tag, ToggleLikeCallbackType } from '../../models/common';
4
4
  export type BlogPageProps = {
5
5
  content: PageContent;
@@ -13,8 +13,9 @@ export type BlogPageProps = {
13
13
  metaData?: MetaProps;
14
14
  setQuery?: SetQueryType;
15
15
  settings?: PageConstructorProviderProps;
16
+ custom?: CustomConfig;
16
17
  pageCountForShowSupportButtons?: number;
17
18
  isSignedInUser?: boolean;
18
19
  onClickSignIn?: React.EventHandler<SyntheticEvent>;
19
20
  };
20
- export declare const BlogPage: ({ content, posts, tags, services, getPosts, metaData, hasLikes, toggleLike, navigation, settings, pageCountForShowSupportButtons, isSignedInUser, onClickSignIn, }: BlogPageProps) => React.JSX.Element;
21
+ export declare const BlogPage: ({ content, posts, tags, services, getPosts, metaData, custom, hasLikes, toggleLike, navigation, settings, pageCountForShowSupportButtons, isSignedInUser, onClickSignIn, }: BlogPageProps) => React.JSX.Element;
@@ -7,12 +7,13 @@ const page_constructor_1 = require("@gravity-ui/page-constructor");
7
7
  const MetaWrapper_1 = require("../../components/MetaWrapper/MetaWrapper");
8
8
  const PromptSignIn_1 = require("../../components/PromptSignIn/PromptSignIn");
9
9
  const usePromptSignInProps_1 = require("../../components/PromptSignIn/hooks/usePromptSignInProps");
10
- const blocksMap_1 = tslib_1.__importDefault(require("../../constructor/blocksMap"));
11
10
  const FeedContext_1 = require("../../contexts/FeedContext");
12
11
  const LikesContext_1 = require("../../contexts/LikesContext");
13
- const BlogPage = ({ content, posts, tags, services, getPosts, metaData, hasLikes = false, toggleLike, navigation, settings, pageCountForShowSupportButtons, isSignedInUser = false, onClickSignIn, }) => {
12
+ const useExtendedComponentMap_1 = require("../../hooks/useExtendedComponentMap");
13
+ const BlogPage = ({ content, posts, tags, services, getPosts, metaData, custom, hasLikes = false, toggleLike, navigation, settings, pageCountForShowSupportButtons, isSignedInUser = false, onClickSignIn, }) => {
14
14
  const _a = (0, usePromptSignInProps_1.usePromptSignInProps)(onClickSignIn), { requireSignIn } = _a, promptSignInProps = tslib_1.__rest(_a, ["requireSignIn"]);
15
15
  const likesContextData = (0, react_1.useMemo)(() => ({ toggleLike, hasLikes, isSignedInUser, requireSignIn }), [toggleLike, hasLikes, isSignedInUser, requireSignIn]);
16
+ const actualComponentMap = (0, useExtendedComponentMap_1.useExtendedComponentMap)(custom);
16
17
  return (react_1.default.createElement(LikesContext_1.LikesContext.Provider, { value: likesContextData },
17
18
  react_1.default.createElement(FeedContext_1.FeedContext.Provider, { value: {
18
19
  posts: posts.posts,
@@ -25,7 +26,7 @@ const BlogPage = ({ content, posts, tags, services, getPosts, metaData, hasLikes
25
26
  } },
26
27
  react_1.default.createElement(page_constructor_1.PageConstructorProvider, Object.assign({}, settings),
27
28
  metaData ? react_1.default.createElement(MetaWrapper_1.MetaWrapper, Object.assign({}, metaData)) : null,
28
- react_1.default.createElement(page_constructor_1.PageConstructor, { content: content, custom: blocksMap_1.default, navigation: navigation }))),
29
+ react_1.default.createElement(page_constructor_1.PageConstructor, { content: content, custom: actualComponentMap, navigation: navigation }))),
29
30
  react_1.default.createElement(PromptSignIn_1.PromptSignIn, Object.assign({}, promptSignInProps))));
30
31
  };
31
32
  exports.BlogPage = BlogPage;
@@ -1,6 +1,6 @@
1
1
  import React, { SyntheticEvent } from 'react';
2
2
  import { ShareOptions } from '@gravity-ui/components';
3
- import { NavigationData, PageConstructorProviderProps, PageContent } from '@gravity-ui/page-constructor';
3
+ import { CustomConfig, NavigationData, PageConstructorProviderProps, PageContent } from '@gravity-ui/page-constructor';
4
4
  import { MetaProps, PostData, ToggleLikeCallbackType } from '../../models/common';
5
5
  export interface BlogPostPageProps {
6
6
  suggestedPosts: PostData[];
@@ -14,8 +14,9 @@ export interface BlogPostPageProps {
14
14
  post: PostData;
15
15
  settings?: PageConstructorProviderProps;
16
16
  navigation?: NavigationData;
17
+ custom?: CustomConfig;
17
18
  shareOptions?: ShareOptions[];
18
19
  isSignedInUser?: boolean;
19
20
  onClickSignIn?: React.EventHandler<SyntheticEvent>;
20
21
  }
21
- export declare const BlogPostPage: ({ metaData, suggestedPosts, likes, content, post, settings, navigation, shareOptions, isSignedInUser, onClickSignIn, }: BlogPostPageProps) => React.JSX.Element;
22
+ export declare const BlogPostPage: ({ metaData, suggestedPosts, likes, content, post, settings, navigation, custom, shareOptions, isSignedInUser, onClickSignIn, }: BlogPostPageProps) => React.JSX.Element;
@@ -7,11 +7,11 @@ const page_constructor_1 = require("@gravity-ui/page-constructor");
7
7
  const MetaWrapper_1 = require("../../components/MetaWrapper/MetaWrapper");
8
8
  const PromptSignIn_1 = require("../../components/PromptSignIn/PromptSignIn");
9
9
  const usePromptSignInProps_1 = require("../../components/PromptSignIn/hooks/usePromptSignInProps");
10
- const blocksMap_1 = tslib_1.__importDefault(require("../../constructor/blocksMap"));
11
10
  const LikesContext_1 = require("../../contexts/LikesContext");
12
11
  const PostPageContext_1 = require("../../contexts/PostPageContext");
12
+ const useExtendedComponentMap_1 = require("../../hooks/useExtendedComponentMap");
13
13
  const useLikes_1 = require("../../hooks/useLikes");
14
- const BlogPostPage = ({ metaData, suggestedPosts, likes, content, post, settings, navigation, shareOptions, isSignedInUser = false, onClickSignIn, }) => {
14
+ const BlogPostPage = ({ metaData, suggestedPosts, likes, content, post, settings, navigation, custom, shareOptions, isSignedInUser = false, onClickSignIn, }) => {
15
15
  const { hasUserLike, likesCount, handleLike } = (0, useLikes_1.useLikes)({
16
16
  hasLike: likes === null || likes === void 0 ? void 0 : likes.hasUserLike,
17
17
  count: likes === null || likes === void 0 ? void 0 : likes.likesCount,
@@ -25,6 +25,7 @@ const BlogPostPage = ({ metaData, suggestedPosts, likes, content, post, settings
25
25
  isSignedInUser,
26
26
  requireSignIn,
27
27
  }), [likes, isSignedInUser, requireSignIn]);
28
+ const actualComponentMap = (0, useExtendedComponentMap_1.useExtendedComponentMap)(custom);
28
29
  return (react_1.default.createElement(LikesContext_1.LikesContext.Provider, { value: likesContextData },
29
30
  react_1.default.createElement(PostPageContext_1.PostPageContext.Provider, { value: {
30
31
  post,
@@ -40,7 +41,7 @@ const BlogPostPage = ({ metaData, suggestedPosts, likes, content, post, settings
40
41
  } },
41
42
  react_1.default.createElement(page_constructor_1.PageConstructorProvider, Object.assign({}, settings),
42
43
  metaData ? react_1.default.createElement(MetaWrapper_1.MetaWrapper, Object.assign({}, metaData)) : null,
43
- react_1.default.createElement(page_constructor_1.PageConstructor, { content: content, custom: blocksMap_1.default, navigation: navigation }))),
44
+ react_1.default.createElement(page_constructor_1.PageConstructor, { content: content, custom: actualComponentMap, navigation: navigation }))),
44
45
  react_1.default.createElement(PromptSignIn_1.PromptSignIn, Object.assign({}, promptSignInProps))));
45
46
  };
46
47
  exports.BlogPostPage = BlogPostPage;
@@ -0,0 +1,24 @@
1
+ import { CustomConfig } from '@gravity-ui/page-constructor';
2
+ export declare const useExtendedComponentMap: (custom: CustomConfig | undefined) => {
3
+ blocks: {
4
+ "blog-yfm-block": (props: import("../models/blocks").YFMProps) => import("react").JSX.Element;
5
+ "blog-layout-block": ({ fullWidth, mobileOrder, children, paddingTop, paddingBottom, }: import("react").PropsWithChildren<import("../models/blocks").LayoutProps>) => import("react").JSX.Element;
6
+ "blog-media-block": ({ text, paddingTop, paddingBottom, ...mediaProps }: import("../models/blocks").MediaProps) => import("react").JSX.Element;
7
+ "blog-banner-block": ({ color, imageSize, image, paddingTop, paddingBottom, qa, ...content }: import("../models/blocks").BannerProps) => import("react").JSX.Element;
8
+ "blog-cta-block": ({ items, paddingTop, paddingBottom, qa }: import("../models/blocks").CTAProps) => import("react").JSX.Element;
9
+ "blog-colored-text-block": ({ background, paddingTop, paddingBottom, qa, ...content }: import("../models/blocks").ColoredTextProps) => import("react").JSX.Element;
10
+ "blog-author-block": (props: import("../models/blocks").AuthorProps) => import("react").JSX.Element | null;
11
+ "blog-suggest-block": ({ paddingTop, paddingBottom }: import("../models/blocks").SuggestProps) => import("react").JSX.Element | null;
12
+ "blog-meta-block": (props: import("../models/blocks").MetaProps) => import("react").JSX.Element;
13
+ "blog-feed-block": ({ image }: import("../models/blocks").FeedProps) => import("react").JSX.Element;
14
+ };
15
+ headers: {
16
+ "blog-header-block": (props: import("../models/blocks").HeaderProps) => import("react").JSX.Element;
17
+ };
18
+ subBlocks?: import("@gravity-ui/page-constructor").CustomItems | undefined;
19
+ navigation?: import("@gravity-ui/page-constructor").CustomItems | undefined;
20
+ loadable?: import("@gravity-ui/page-constructor").LoadableConfig | undefined;
21
+ decorators?: {
22
+ block?: ((props: import("@gravity-ui/page-constructor").BlockDecorationProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>)[] | undefined;
23
+ } | undefined;
24
+ };
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useExtendedComponentMap = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = require("react");
6
+ const page_constructor_1 = require("@gravity-ui/page-constructor");
7
+ const blocksMap_1 = tslib_1.__importDefault(require("../constructor/blocksMap"));
8
+ const useExtendedComponentMap = (custom) => (0, react_1.useMemo)(() => (Object.assign(Object.assign({}, custom), { blocks: Object.assign(Object.assign({}, blocksMap_1.default.blocks), (0, page_constructor_1.getCustomItems)(['blocks'], custom)), headers: Object.assign(Object.assign({}, blocksMap_1.default.headers), (0, page_constructor_1.getCustomItems)(['headers'], custom)) })), [custom]);
9
+ exports.useExtendedComponentMap = useExtendedComponentMap;
@@ -1,5 +1,5 @@
1
1
  import React, { SyntheticEvent } from 'react';
2
- import { NavigationData, PageConstructorProviderProps, PageContent } from '@gravity-ui/page-constructor';
2
+ import { CustomConfig, NavigationData, PageConstructorProviderProps, PageContent } from '@gravity-ui/page-constructor';
3
3
  import { GetPostsType, MetaProps, PostsProps, Service, SetQueryType, Tag, ToggleLikeCallbackType } from '../../models/common';
4
4
  import './BlogPage.css';
5
5
  export type BlogPageProps = {
@@ -14,8 +14,9 @@ export type BlogPageProps = {
14
14
  metaData?: MetaProps;
15
15
  setQuery?: SetQueryType;
16
16
  settings?: PageConstructorProviderProps;
17
+ custom?: CustomConfig;
17
18
  pageCountForShowSupportButtons?: number;
18
19
  isSignedInUser?: boolean;
19
20
  onClickSignIn?: React.EventHandler<SyntheticEvent>;
20
21
  };
21
- export declare const BlogPage: ({ content, posts, tags, services, getPosts, metaData, hasLikes, toggleLike, navigation, settings, pageCountForShowSupportButtons, isSignedInUser, onClickSignIn, }: BlogPageProps) => React.JSX.Element;
22
+ export declare const BlogPage: ({ content, posts, tags, services, getPosts, metaData, custom, hasLikes, toggleLike, navigation, settings, pageCountForShowSupportButtons, isSignedInUser, onClickSignIn, }: BlogPageProps) => React.JSX.Element;
@@ -4,13 +4,14 @@ import { PageConstructor, PageConstructorProvider, } from '@gravity-ui/page-cons
4
4
  import { MetaWrapper } from '../../components/MetaWrapper/MetaWrapper';
5
5
  import { PromptSignIn } from '../../components/PromptSignIn/PromptSignIn';
6
6
  import { usePromptSignInProps } from '../../components/PromptSignIn/hooks/usePromptSignInProps';
7
- import componentMap from '../../constructor/blocksMap';
8
7
  import { FeedContext } from '../../contexts/FeedContext';
9
8
  import { LikesContext } from '../../contexts/LikesContext';
9
+ import { useExtendedComponentMap } from '../../hooks/useExtendedComponentMap';
10
10
  import './BlogPage.css';
11
- export const BlogPage = ({ content, posts, tags, services, getPosts, metaData, hasLikes = false, toggleLike, navigation, settings, pageCountForShowSupportButtons, isSignedInUser = false, onClickSignIn, }) => {
11
+ export const BlogPage = ({ content, posts, tags, services, getPosts, metaData, custom, hasLikes = false, toggleLike, navigation, settings, pageCountForShowSupportButtons, isSignedInUser = false, onClickSignIn, }) => {
12
12
  const _a = usePromptSignInProps(onClickSignIn), { requireSignIn } = _a, promptSignInProps = __rest(_a, ["requireSignIn"]);
13
13
  const likesContextData = useMemo(() => ({ toggleLike, hasLikes, isSignedInUser, requireSignIn }), [toggleLike, hasLikes, isSignedInUser, requireSignIn]);
14
+ const actualComponentMap = useExtendedComponentMap(custom);
14
15
  return (React.createElement(LikesContext.Provider, { value: likesContextData },
15
16
  React.createElement(FeedContext.Provider, { value: {
16
17
  posts: posts.posts,
@@ -23,6 +24,6 @@ export const BlogPage = ({ content, posts, tags, services, getPosts, metaData, h
23
24
  } },
24
25
  React.createElement(PageConstructorProvider, Object.assign({}, settings),
25
26
  metaData ? React.createElement(MetaWrapper, Object.assign({}, metaData)) : null,
26
- React.createElement(PageConstructor, { content: content, custom: componentMap, navigation: navigation }))),
27
+ React.createElement(PageConstructor, { content: content, custom: actualComponentMap, navigation: navigation }))),
27
28
  React.createElement(PromptSignIn, Object.assign({}, promptSignInProps))));
28
29
  };
@@ -1,6 +1,6 @@
1
1
  import React, { SyntheticEvent } from 'react';
2
2
  import { ShareOptions } from '@gravity-ui/components';
3
- import { NavigationData, PageConstructorProviderProps, PageContent } from '@gravity-ui/page-constructor';
3
+ import { CustomConfig, NavigationData, PageConstructorProviderProps, PageContent } from '@gravity-ui/page-constructor';
4
4
  import { MetaProps, PostData, ToggleLikeCallbackType } from '../../models/common';
5
5
  import './BlogPostPage.css';
6
6
  export interface BlogPostPageProps {
@@ -15,8 +15,9 @@ export interface BlogPostPageProps {
15
15
  post: PostData;
16
16
  settings?: PageConstructorProviderProps;
17
17
  navigation?: NavigationData;
18
+ custom?: CustomConfig;
18
19
  shareOptions?: ShareOptions[];
19
20
  isSignedInUser?: boolean;
20
21
  onClickSignIn?: React.EventHandler<SyntheticEvent>;
21
22
  }
22
- export declare const BlogPostPage: ({ metaData, suggestedPosts, likes, content, post, settings, navigation, shareOptions, isSignedInUser, onClickSignIn, }: BlogPostPageProps) => React.JSX.Element;
23
+ export declare const BlogPostPage: ({ metaData, suggestedPosts, likes, content, post, settings, navigation, custom, shareOptions, isSignedInUser, onClickSignIn, }: BlogPostPageProps) => React.JSX.Element;
@@ -4,12 +4,12 @@ import { PageConstructor, PageConstructorProvider, } from '@gravity-ui/page-cons
4
4
  import { MetaWrapper } from '../../components/MetaWrapper/MetaWrapper';
5
5
  import { PromptSignIn } from '../../components/PromptSignIn/PromptSignIn';
6
6
  import { usePromptSignInProps } from '../../components/PromptSignIn/hooks/usePromptSignInProps';
7
- import componentMap from '../../constructor/blocksMap';
8
7
  import { LikesContext } from '../../contexts/LikesContext';
9
8
  import { PostPageContext } from '../../contexts/PostPageContext';
9
+ import { useExtendedComponentMap } from '../../hooks/useExtendedComponentMap';
10
10
  import { useLikes } from '../../hooks/useLikes';
11
11
  import './BlogPostPage.css';
12
- export const BlogPostPage = ({ metaData, suggestedPosts, likes, content, post, settings, navigation, shareOptions, isSignedInUser = false, onClickSignIn, }) => {
12
+ export const BlogPostPage = ({ metaData, suggestedPosts, likes, content, post, settings, navigation, custom, shareOptions, isSignedInUser = false, onClickSignIn, }) => {
13
13
  const { hasUserLike, likesCount, handleLike } = useLikes({
14
14
  hasLike: likes === null || likes === void 0 ? void 0 : likes.hasUserLike,
15
15
  count: likes === null || likes === void 0 ? void 0 : likes.likesCount,
@@ -23,6 +23,7 @@ export const BlogPostPage = ({ metaData, suggestedPosts, likes, content, post, s
23
23
  isSignedInUser,
24
24
  requireSignIn,
25
25
  }), [likes, isSignedInUser, requireSignIn]);
26
+ const actualComponentMap = useExtendedComponentMap(custom);
26
27
  return (React.createElement(LikesContext.Provider, { value: likesContextData },
27
28
  React.createElement(PostPageContext.Provider, { value: {
28
29
  post,
@@ -38,6 +39,6 @@ export const BlogPostPage = ({ metaData, suggestedPosts, likes, content, post, s
38
39
  } },
39
40
  React.createElement(PageConstructorProvider, Object.assign({}, settings),
40
41
  metaData ? React.createElement(MetaWrapper, Object.assign({}, metaData)) : null,
41
- React.createElement(PageConstructor, { content: content, custom: componentMap, navigation: navigation }))),
42
+ React.createElement(PageConstructor, { content: content, custom: actualComponentMap, navigation: navigation }))),
42
43
  React.createElement(PromptSignIn, Object.assign({}, promptSignInProps))));
43
44
  };
@@ -0,0 +1,24 @@
1
+ import { CustomConfig } from '@gravity-ui/page-constructor';
2
+ export declare const useExtendedComponentMap: (custom: CustomConfig | undefined) => {
3
+ blocks: {
4
+ "blog-yfm-block": (props: import("../models/blocks").YFMProps) => import("react").JSX.Element;
5
+ "blog-layout-block": ({ fullWidth, mobileOrder, children, paddingTop, paddingBottom, }: import("react").PropsWithChildren<import("../models/blocks").LayoutProps>) => import("react").JSX.Element;
6
+ "blog-media-block": ({ text, paddingTop, paddingBottom, ...mediaProps }: import("../models/blocks").MediaProps) => import("react").JSX.Element;
7
+ "blog-banner-block": ({ color, imageSize, image, paddingTop, paddingBottom, qa, ...content }: import("../models/blocks").BannerProps) => import("react").JSX.Element;
8
+ "blog-cta-block": ({ items, paddingTop, paddingBottom, qa }: import("../models/blocks").CTAProps) => import("react").JSX.Element;
9
+ "blog-colored-text-block": ({ background, paddingTop, paddingBottom, qa, ...content }: import("../models/blocks").ColoredTextProps) => import("react").JSX.Element;
10
+ "blog-author-block": (props: import("../models/blocks").AuthorProps) => import("react").JSX.Element | null;
11
+ "blog-suggest-block": ({ paddingTop, paddingBottom }: import("../models/blocks").SuggestProps) => import("react").JSX.Element | null;
12
+ "blog-meta-block": (props: import("../models/blocks").MetaProps) => import("react").JSX.Element;
13
+ "blog-feed-block": ({ image }: import("../models/blocks").FeedProps) => import("react").JSX.Element;
14
+ };
15
+ headers: {
16
+ "blog-header-block": (props: import("../models/blocks").HeaderProps) => import("react").JSX.Element;
17
+ };
18
+ subBlocks?: import("@gravity-ui/page-constructor").CustomItems | undefined;
19
+ navigation?: import("@gravity-ui/page-constructor").CustomItems | undefined;
20
+ loadable?: import("@gravity-ui/page-constructor").LoadableConfig | undefined;
21
+ decorators?: {
22
+ block?: ((props: import("@gravity-ui/page-constructor").BlockDecorationProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>)[] | undefined;
23
+ } | undefined;
24
+ };
@@ -0,0 +1,4 @@
1
+ import { useMemo } from 'react';
2
+ import { getCustomItems } from '@gravity-ui/page-constructor';
3
+ import componentMap from '../constructor/blocksMap';
4
+ export const useExtendedComponentMap = (custom) => useMemo(() => (Object.assign(Object.assign({}, custom), { blocks: Object.assign(Object.assign({}, componentMap.blocks), getCustomItems(['blocks'], custom)), headers: Object.assign(Object.assign({}, componentMap.headers), getCustomItems(['headers'], custom)) })), [custom]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/blog-constructor",
3
- "version": "5.11.0",
3
+ "version": "5.12.0",
4
4
  "description": "Gravity UI Blog Constructor",
5
5
  "license": "MIT",
6
6
  "repository": {