@gravity-ui/blog-constructor 2.1.2-alpha.2 → 2.2.0

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 (109) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/build/cjs/blocks/Author/Author.js +3 -3
  3. package/build/cjs/blocks/Banner/Banner.js +4 -7
  4. package/build/cjs/blocks/CTA/CTA.js +3 -6
  5. package/build/cjs/blocks/ColoredText/ColoredText.js +1 -1
  6. package/build/cjs/blocks/Feed/Feed.js +12 -28
  7. package/build/cjs/blocks/Feed/reducer.d.ts +1 -1
  8. package/build/cjs/blocks/Header/Header.js +3 -7
  9. package/build/cjs/blocks/Meta/Meta.js +5 -9
  10. package/build/cjs/blocks/Suggest/Suggest.js +4 -8
  11. package/build/cjs/blocks/YFM/YFM.js +1 -1
  12. package/build/cjs/components/FeedHeader/FeedHeader.d.ts +1 -1
  13. package/build/cjs/components/FeedHeader/FeedHeader.js +1 -1
  14. package/build/cjs/components/FeedHeader/components/Controls/Controls.d.ts +1 -1
  15. package/build/cjs/components/FeedHeader/components/Controls/Controls.js +4 -28
  16. package/build/cjs/components/FeedHeader/components/Controls/customRenders.d.ts +1 -1
  17. package/build/cjs/components/FeedHeader/components/Controls/customRenders.js +1 -1
  18. package/build/cjs/components/Paginator/Paginator.js +2 -26
  19. package/build/cjs/components/Paginator/components/NavigationButton.js +1 -1
  20. package/build/cjs/components/Paginator/components/PaginatorItem.js +1 -1
  21. package/build/cjs/components/PostCard/PostCard.d.ts +0 -4
  22. package/build/cjs/components/PostCard/PostCard.js +1 -1
  23. package/build/cjs/components/PostInfo/PostInfo.d.ts +0 -4
  24. package/build/cjs/components/PostInfo/PostInfo.js +2 -2
  25. package/build/cjs/components/PostInfo/SuggestPostInfo.js +1 -1
  26. package/build/cjs/components/PostInfo/components/Date.js +1 -1
  27. package/build/cjs/components/PostInfo/components/Save.d.ts +0 -4
  28. package/build/cjs/components/PostInfo/components/Save.js +4 -8
  29. package/build/cjs/components/PostInfo/components/Sharing.d.ts +0 -4
  30. package/build/cjs/components/PostInfo/components/Sharing.js +5 -12
  31. package/build/cjs/components/Posts/Posts.js +1 -1
  32. package/build/cjs/components/PostsEmpty/PostsEmpty.js +1 -1
  33. package/build/cjs/components/Search/Search.js +2 -2
  34. package/build/cjs/components/Wrapper/Wrapper.js +1 -1
  35. package/build/cjs/constructor/BlogConstructorProvider.d.ts +1 -3
  36. package/build/cjs/constructor/BlogConstructorProvider.js +4 -6
  37. package/build/cjs/constructor/blocksMap.js +8 -8
  38. package/build/cjs/containers/BlogPage/BlogPage.d.ts +2 -2
  39. package/build/cjs/containers/BlogPage/BlogPage.js +2 -2
  40. package/build/cjs/containers/BlogPostPage/BlogPostPage.d.ts +2 -2
  41. package/build/cjs/containers/BlogPostPage/BlogPostPage.js +2 -2
  42. package/build/cjs/contexts/FeedContext.d.ts +1 -1
  43. package/build/cjs/contexts/theme/ThemeProvider.js +1 -1
  44. package/build/cjs/counters/metrika.d.ts +0 -4
  45. package/build/cjs/counters/metrika.js +0 -4
  46. package/build/cjs/models/blocks.d.ts +1 -1
  47. package/build/cjs/models/common.d.ts +2 -12
  48. package/build/cjs/models/common.js +2 -14
  49. package/build/cjs/utils/common.d.ts +1 -1
  50. package/build/cjs/utils/common.js +1 -1
  51. package/build/esm/blocks/Author/Author.js +5 -5
  52. package/build/esm/blocks/Banner/Banner.js +4 -7
  53. package/build/esm/blocks/CTA/CTA.js +3 -6
  54. package/build/esm/blocks/ColoredText/ColoredText.js +1 -1
  55. package/build/esm/blocks/Feed/Feed.js +8 -24
  56. package/build/esm/blocks/Feed/reducer.d.ts +1 -1
  57. package/build/esm/blocks/Header/Header.js +3 -7
  58. package/build/esm/blocks/Meta/Meta.js +5 -9
  59. package/build/esm/blocks/Suggest/Suggest.js +4 -8
  60. package/build/esm/blocks/YFM/YFM.js +1 -1
  61. package/build/esm/components/FeedHeader/FeedHeader.d.ts +1 -1
  62. package/build/esm/components/FeedHeader/FeedHeader.js +2 -2
  63. package/build/esm/components/FeedHeader/components/Controls/Controls.d.ts +1 -1
  64. package/build/esm/components/FeedHeader/components/Controls/Controls.js +6 -30
  65. package/build/esm/components/FeedHeader/components/Controls/customRenders.d.ts +1 -1
  66. package/build/esm/components/FeedHeader/components/Controls/customRenders.js +2 -2
  67. package/build/esm/components/Paginator/Paginator.js +3 -27
  68. package/build/esm/components/Paginator/components/NavigationButton.js +2 -2
  69. package/build/esm/components/Paginator/components/PaginatorItem.js +1 -1
  70. package/build/esm/components/PostCard/PostCard.d.ts +0 -4
  71. package/build/esm/components/PostCard/PostCard.js +3 -3
  72. package/build/esm/components/PostInfo/PostInfo.d.ts +0 -4
  73. package/build/esm/components/PostInfo/PostInfo.js +2 -2
  74. package/build/esm/components/PostInfo/SuggestPostInfo.js +1 -1
  75. package/build/esm/components/PostInfo/components/Date.js +1 -1
  76. package/build/esm/components/PostInfo/components/ReadingTime.js +1 -1
  77. package/build/esm/components/PostInfo/components/Save.d.ts +0 -4
  78. package/build/esm/components/PostInfo/components/Save.js +2 -6
  79. package/build/esm/components/PostInfo/components/Sharing.d.ts +0 -4
  80. package/build/esm/components/PostInfo/components/Sharing.js +4 -11
  81. package/build/esm/components/Posts/Posts.js +2 -2
  82. package/build/esm/components/PostsEmpty/PostsEmpty.js +1 -1
  83. package/build/esm/components/PostsError/PostsError.js +1 -1
  84. package/build/esm/components/Search/Search.js +3 -3
  85. package/build/esm/components/Wrapper/Wrapper.js +1 -1
  86. package/build/esm/constructor/BlogConstructorProvider.d.ts +1 -3
  87. package/build/esm/constructor/BlogConstructorProvider.js +4 -6
  88. package/build/esm/constructor/blocksMap.js +8 -8
  89. package/build/esm/containers/BlogPage/BlogPage.d.ts +2 -2
  90. package/build/esm/containers/BlogPage/BlogPage.js +2 -2
  91. package/build/esm/containers/BlogPostPage/BlogPostPage.d.ts +2 -2
  92. package/build/esm/containers/BlogPostPage/BlogPostPage.js +2 -2
  93. package/build/esm/contexts/FeedContext.d.ts +1 -1
  94. package/build/esm/contexts/theme/ThemeProvider.js +1 -1
  95. package/build/esm/counters/metrika.d.ts +0 -4
  96. package/build/esm/counters/metrika.js +0 -4
  97. package/build/esm/hooks/useLikes.js +1 -1
  98. package/build/esm/models/blocks.d.ts +1 -1
  99. package/build/esm/models/common.d.ts +2 -12
  100. package/build/esm/models/common.js +1 -13
  101. package/build/esm/utils/common.d.ts +1 -1
  102. package/build/esm/utils/common.js +3 -3
  103. package/package.json +5 -7
  104. package/server/data/contentFilter.js +1 -0
  105. package/server/data/createReadableContent.js +1 -1
  106. package/server/data/transformPost.d.ts +1 -1
  107. package/server/models/blocks.d.ts +1 -1
  108. package/server/models/common.d.ts +2 -12
  109. package/server/models/common.js +2 -14
@@ -1,15 +1,11 @@
1
1
  import React, { useContext } from 'react';
2
2
  import { SliderBlock } from '@gravity-ui/page-constructor';
3
- import { i18, Keyset } from '../../i18n';
4
- import { Wrapper } from '../../components/Wrapper/Wrapper';
5
3
  import { PostCard } from '../../components/PostCard/PostCard';
6
- import { PaddingsDirections } from '../../models/paddings';
7
- import { PostPageContext } from '../../contexts/PostPageContext';
4
+ import { Wrapper } from '../../components/Wrapper/Wrapper';
8
5
  import { BlogMetrikaGoalIds } from '../../constants';
9
- /**
10
- * @deprecated Metrika will be deleted after launch of analyticsEvents
11
- * https://st.yandex-team.ru/PAGECTR-7
12
- */
6
+ import { PostPageContext } from '../../contexts/PostPageContext';
7
+ import { Keyset, i18 } from '../../i18n';
8
+ import { PaddingsDirections } from '../../models/paddings';
13
9
  const metrikaGoals = [
14
10
  {
15
11
  name: BlogMetrikaGoalIds.suggest,
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
- import { YFMWrapper } from '@gravity-ui/page-constructor';
3
2
  import block from 'bem-cn-lite';
3
+ import { YFMWrapper } from '@gravity-ui/page-constructor';
4
4
  import { Wrapper } from '../../components/Wrapper/Wrapper';
5
5
  import { PaddingsDirections } from '../../models/paddings';
6
6
  const b = block('yfm');
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { HeaderBlockProps, ClassNameProps } from '../../models/common';
2
+ import { ClassNameProps, HeaderBlockProps } from '../../models/common';
3
3
  import { ControlsProps } from './components/Controls/Controls';
4
4
  import './FeedHeader.css';
5
5
  type HeaderProps = Pick<HeaderBlockProps, 'background' | 'offset' | 'theme' | 'verticalOffset'>;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
- import { BackgroundImage, Grid, getThemedValue, FullWidthBackground, } from '@gravity-ui/page-constructor';
3
- import { Controls } from './components/Controls/Controls';
2
+ import { BackgroundImage, FullWidthBackground, Grid, getThemedValue, } from '@gravity-ui/page-constructor';
4
3
  import { block } from '../../utils/cn';
4
+ import { Controls } from './components/Controls/Controls';
5
5
  import './FeedHeader.css';
6
6
  const b = block('feed-header');
7
7
  export const FeedHeader = ({ tags, services, setIsFetching, offset = 'default', background, theme = 'default', verticalOffset = 'l', className, handleChangeQuery, queryParams, }) => {
@@ -1,5 +1,5 @@
1
1
  import React, { ReactNode } from 'react';
2
- import { HandleChangeQueryParams, SetQueryType, Query } from '../../../../models/common';
2
+ import { HandleChangeQueryParams, Query, SetQueryType } from '../../../../models/common';
3
3
  import './Controls.css';
4
4
  export type SelectItem = {
5
5
  content: string;
@@ -1,20 +1,14 @@
1
- import React, { useState, useContext, useMemo } from 'react';
2
- import { useAnalytics } from '@gravity-ui/page-constructor';
3
- import { Icon, Button, Select } from '@gravity-ui/uikit';
4
- import { Search } from '../../../Search/Search';
5
- import { renderSwitcher, renderFilter, renderOption } from './customRenders';
6
- import { LikesContext } from '../../../../contexts/LikesContext';
7
- /**
8
- * @deprecated Metrika will be deleted after launch of analyticsEvents
9
- * https://st.yandex-team.ru/PAGECTR-7
10
- */
1
+ import React, { useContext, useMemo, useState } from 'react';
2
+ import { Button, Icon, Select } from '@gravity-ui/uikit';
11
3
  import { BlogMetrikaGoalIds } from '../../../../constants';
4
+ import { LikesContext } from '../../../../contexts/LikesContext';
12
5
  import metrika from '../../../../counters/metrika.js';
13
6
  import { MetrikaCounter } from '../../../../counters/utils';
7
+ import { Keyset, i18 } from '../../../../i18n';
14
8
  import { Save } from '../../../../icons/Save';
15
- import { i18, Keyset } from '../../../../i18n';
16
9
  import { block } from '../../../../utils/cn';
17
- import { DefaultEventNames, } from '../../../../models/common';
10
+ import { Search } from '../../../Search/Search';
11
+ import { renderFilter, renderOption, renderSwitcher } from './customRenders';
18
12
  import './Controls.css';
19
13
  const b = block('feed-controls');
20
14
  const ICON_SIZE = 16;
@@ -22,15 +16,11 @@ const DEFAULT_PAGE = 1;
22
16
  const VIRTUALIZATION_THRESHOLD = 1000;
23
17
  export const Controls = ({ setIsFetching, tags = [], services = [], handleChangeQuery, queryParams, }) => {
24
18
  const { hasLikes } = useContext(LikesContext);
25
- const handleAnalyticsTag = useAnalytics(DefaultEventNames.Tag);
26
- const handleAnalyticsService = useAnalytics(DefaultEventNames.Service);
27
- const handleAnalyticsSaveOnly = useAnalytics(DefaultEventNames.SaveOnly);
28
19
  const { savedOnly: savedOnlyInitial, search: searchInitial, tags: tagInitial, services: servicesInitial, } = queryParams || {};
29
20
  const [savedOnly, setSavedOnly] = useState(savedOnlyInitial === 'true');
30
21
  const [search, setSearch] = useState(searchInitial);
31
22
  const handleSavedOnly = () => {
32
23
  handleChangeQuery({ savedOnly: savedOnly ? '' : 'true' });
33
- handleAnalyticsSaveOnly();
34
24
  setSavedOnly(!savedOnly);
35
25
  setIsFetching(true);
36
26
  };
@@ -40,16 +30,9 @@ export const Controls = ({ setIsFetching, tags = [], services = [], handleChange
40
30
  setIsFetching(true);
41
31
  };
42
32
  const handleTagSelect = (selectedTags) => {
43
- /**
44
- * @deprecated Metrika will be deleted after launch of analyticsEvents
45
- * https://st.yandex-team.ru/PAGECTR-7
46
- */
47
33
  metrika.reachGoal(MetrikaCounter.CrossSite, BlogMetrikaGoalIds.tag, {
48
34
  theme: selectedTags[0],
49
35
  });
50
- handleAnalyticsTag(null, {
51
- theme: selectedTags[0],
52
- });
53
36
  const isEmptyTag = selectedTags.some((tag) => tag === 'empty');
54
37
  handleChangeQuery({
55
38
  tags: isEmptyTag ? '' : selectedTags[0],
@@ -62,16 +45,9 @@ export const Controls = ({ setIsFetching, tags = [], services = [], handleChange
62
45
  return selectedServices.includes(service.value);
63
46
  });
64
47
  const metrikaAsString = forMetrikaServices.map((service) => service.content).join(',');
65
- /**
66
- * @deprecated Metrika will be deleted after launch of analyticsEvents
67
- * https://st.yandex-team.ru/PAGECTR-7
68
- */
69
48
  metrika.reachGoal(MetrikaCounter.CrossSite, BlogMetrikaGoalIds.service, {
70
49
  service: metrikaAsString,
71
50
  });
72
- handleAnalyticsService(null, {
73
- service: metrikaAsString,
74
- });
75
51
  const servicesAsString = selectedServices.join(',');
76
52
  handleChangeQuery({ services: servicesAsString, page: DEFAULT_PAGE });
77
53
  setIsFetching(true);
@@ -1,4 +1,4 @@
1
- import { SelectProps, SelectOption } from '@gravity-ui/uikit';
1
+ import { SelectOption, SelectProps } from '@gravity-ui/uikit';
2
2
  import { CustomSwitcherProps } from '../CustomSwitcher/CustomSwitcher';
3
3
  import './Controls.css';
4
4
  type RenderSwitcherType = ({ initial, list, defaultLabel, }: {
@@ -1,9 +1,9 @@
1
1
  import React from 'react';
2
2
  import { TextInput } from '@gravity-ui/uikit';
3
- import { i18, Keyset } from '../../../../i18n';
3
+ import { Keyset, i18 } from '../../../../i18n';
4
4
  import { block } from '../../../../utils/cn';
5
- import { CustomSwitcher } from '../CustomSwitcher/CustomSwitcher';
6
5
  import { CustomSelectOption, } from '../CustomSelectOption/CustomSelectOption';
6
+ import { CustomSwitcher } from '../CustomSwitcher/CustomSwitcher';
7
7
  import './Controls.css';
8
8
  const b = block('feed-controls');
9
9
  export const renderSwitcher = ({ initial, list, defaultLabel }) =>
@@ -9,21 +9,15 @@ var __rest = (this && this.__rest) || function (s, e) {
9
9
  }
10
10
  return t;
11
11
  };
12
- import React, { useEffect, useState, useMemo } from 'react';
13
- import { useAnalytics } from '@gravity-ui/page-constructor';
12
+ import React, { useEffect, useMemo, useState } from 'react';
14
13
  import { BlogMetrikaGoalIds } from '../../constants';
15
- /**
16
- * @deprecated Metrika will be deleted after launch of analyticsEvents
17
- * https://st.yandex-team.ru/PAGECTR-7
18
- */
19
14
  import metrika from '../../counters/metrika.js';
20
15
  import { MetrikaCounter } from '../../counters/utils';
21
- import { getPageConfigs, getPagesCount } from './utils';
22
- import { ArrowType } from './types';
23
16
  import { block } from '../../utils/cn';
24
17
  import { NavigationButton } from './components/NavigationButton';
25
18
  import { PaginatorItem } from './components/PaginatorItem';
26
- import { DefaultEventNames } from '../../models/common';
19
+ import { ArrowType } from './types';
20
+ import { getPageConfigs, getPagesCount } from './utils';
27
21
  import './Paginator.css';
28
22
  const b = block('paginator');
29
23
  const DEFAULT_PAGE_COUNT_FOR_SHOW_SUPPORT_BUTTONS = 6;
@@ -35,29 +29,16 @@ export const Paginator = ({ itemsPerPage, totalItems, maxPages, page, className,
35
29
  }, [itemsPerPage, totalItems, maxPages]);
36
30
  const handlePageChange = (pageIndex) => onPageChange === null || onPageChange === void 0 ? void 0 : onPageChange(pageIndex);
37
31
  const isShowSupportButtons = useMemo(() => pagesCount > pageCountForShowSupportButtons, [pageCountForShowSupportButtons, pagesCount]);
38
- const handleAnalyticsHome = useAnalytics(DefaultEventNames.PaginatorHome);
39
- const handleAnalyticsNext = useAnalytics(DefaultEventNames.PaginatorNext);
40
- const handleAnalyticsPage = useAnalytics(DefaultEventNames.PaginatorPage);
41
32
  if (pagesCount <= 1) {
42
33
  return null;
43
34
  }
44
35
  const handleArrowClick = (type) => {
45
36
  let newPage = page;
46
37
  if (type === 'prev' && page > 1) {
47
- /**
48
- * @deprecated Metrika will be deleted after launch of analyticsEvents
49
- * https://st.yandex-team.ru/PAGECTR-7
50
- */
51
38
  metrika.reachGoal(MetrikaCounter.CrossSite, BlogMetrikaGoalIds.home);
52
- handleAnalyticsHome();
53
39
  newPage = 1;
54
40
  }
55
41
  else if (type === 'next' && page < pagesCount) {
56
- /**
57
- * @deprecated Metrika will be deleted after launch of analyticsEvents
58
- * https://st.yandex-team.ru/PAGECTR-7
59
- */
60
- handleAnalyticsNext();
61
42
  metrika.reachGoal(MetrikaCounter.CrossSite, BlogMetrikaGoalIds.next);
62
43
  newPage = page + 1;
63
44
  }
@@ -67,12 +48,7 @@ export const Paginator = ({ itemsPerPage, totalItems, maxPages, page, className,
67
48
  };
68
49
  const handlePageClick = (index) => {
69
50
  if (index !== page && typeof index === 'number') {
70
- /**
71
- * @deprecated Metrika will be deleted after launch of analyticsEvents
72
- * https://st.yandex-team.ru/PAGECTR-7
73
- */
74
51
  metrika.reachGoal(MetrikaCounter.CrossSite, BlogMetrikaGoalIds.page, { page: index });
75
- handleAnalyticsPage(null, { page: String(index) });
76
52
  handlePageChange(index);
77
53
  }
78
54
  };
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
- import { ArrowType } from '../types';
3
- import { i18, Keyset } from '../../../i18n';
2
+ import { Keyset, i18 } from '../../../i18n';
4
3
  import { block } from '../../../utils/cn';
4
+ import { ArrowType } from '../types';
5
5
  import '../Paginator.css';
6
6
  const b = block('paginator');
7
7
  export const NavigationButton = ({ arrowType, disabled }) => disabled ? null : (React.createElement("div", { className: b('icon') }, arrowType === ArrowType.Prev ? i18(Keyset.ButtonBegin) : i18(Keyset.ButtonFarther)));
@@ -1,8 +1,8 @@
1
1
  import React, { useContext } from 'react';
2
2
  import { Button } from '@gravity-ui/uikit';
3
3
  import { LocaleContext } from '../../../contexts/LocaleContext';
4
- import { getBlogPath } from '../../../utils/common';
5
4
  import { block } from '../../../utils/cn';
5
+ import { getBlogPath } from '../../../utils/common';
6
6
  import '../Paginator.css';
7
7
  const b = block('paginator');
8
8
  export const PaginatorItem = ({ dataKey, mods, content, onClick, loading = false, }) => {
@@ -7,10 +7,6 @@ type PostCardProps = {
7
7
  fullWidth?: boolean;
8
8
  showTag?: boolean;
9
9
  size?: 's' | 'm';
10
- /**
11
- * @deprecated Metrika will be deleted after launch of analyticsEvents
12
- * https://st.yandex-team.ru/PAGECTR-7
13
- */
14
10
  metrikaGoals?: MetrikaGoal;
15
11
  };
16
12
  export declare const PostCard: React.FC<PostCardProps>;
@@ -1,8 +1,8 @@
1
- import React, { useMemo, useContext } from 'react';
2
- import { CardBase, YFMWrapper, HTML } from '@gravity-ui/page-constructor';
1
+ import React, { useContext, useMemo } from 'react';
2
+ import { CardBase, HTML, YFMWrapper } from '@gravity-ui/page-constructor';
3
3
  import { LikesContext } from '../../contexts/LikesContext';
4
- import { SuggestPostInfo } from '../PostInfo/SuggestPostInfo';
5
4
  import { block } from '../../utils/cn';
5
+ import { SuggestPostInfo } from '../PostInfo/SuggestPostInfo';
6
6
  import './PostCard.css';
7
7
  const b = block('post-card');
8
8
  export const PostCard = ({ post, metrikaGoals, fullWidth = false, size = 's', showTag = false, }) => {
@@ -10,10 +10,6 @@ type PostInfoProps = {
10
10
  readingTime: PostData['readingTime'];
11
11
  date: PostData['date'];
12
12
  theme?: 'light' | 'dark';
13
- /**
14
- * @deprecated Metrika will be deleted after launch of analyticsEvents
15
- * https://st.yandex-team.ru/PAGECTR-7
16
- */
17
13
  metrikaGoals?: BlogMetrikaGoals;
18
14
  dataQa?: string;
19
15
  };
@@ -1,10 +1,10 @@
1
1
  import React, { useContext } from 'react';
2
2
  import { PostPageContext } from '../../contexts/PostPageContext';
3
+ import { block } from '../../utils/cn';
3
4
  import { Date } from './components/Date';
4
5
  import { ReadingTime } from './components/ReadingTime';
5
- import { Sharing } from './components/Sharing';
6
6
  import { Save } from './components/Save';
7
- import { block } from '../../utils/cn';
7
+ import { Sharing } from './components/Sharing';
8
8
  import './PostInfo.css';
9
9
  const b = block('post-info');
10
10
  /**
@@ -1,9 +1,9 @@
1
1
  import React from 'react';
2
2
  import { useLikes } from '../../hooks/useLikes';
3
+ import { block } from '../../utils/cn';
3
4
  import { Date } from './components/Date';
4
5
  import { ReadingTime } from './components/ReadingTime';
5
6
  import { Save } from './components/Save';
6
- import { block } from '../../utils/cn';
7
7
  import './PostInfo.css';
8
8
  const b = block('post-info');
9
9
  /**
@@ -1,7 +1,7 @@
1
1
  import React, { useContext } from 'react';
2
2
  import { LocaleContext } from '../../../contexts/LocaleContext';
3
- import { format } from '../../../utils/date';
4
3
  import { block } from '../../../utils/cn';
4
+ import { format } from '../../../utils/date';
5
5
  import '../PostInfo.css';
6
6
  const b = block('post-info');
7
7
  export const Date = ({ date, size = 's' }) => {
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { Icon } from '@gravity-ui/uikit';
3
- import { i18, Keyset } from '../../../i18n';
3
+ import { Keyset, i18 } from '../../../i18n';
4
4
  import { Time } from '../../../icons/Time';
5
5
  import { block } from '../../../utils/cn';
6
6
  import '../PostInfo.css';
@@ -6,10 +6,6 @@ type SaveProps = {
6
6
  hasUserLike: boolean;
7
7
  handleUserLike: () => void;
8
8
  theme?: 'light' | 'dark';
9
- /**
10
- * @deprecated Metrika will be deleted after launch of analyticsEvents
11
- * https://st.yandex-team.ru/PAGECTR-7
12
- */
13
9
  metrikaGoal?: string;
14
10
  dataQa?: string;
15
11
  size?: 's' | 'm';
@@ -1,15 +1,13 @@
1
- import { useAnalytics } from '@gravity-ui/page-constructor';
2
- import { Icon } from '@gravity-ui/uikit';
3
1
  import React, { useContext } from 'react';
2
+ import { Icon } from '@gravity-ui/uikit';
4
3
  import { UserContext } from '../../../contexts/UserContext';
5
4
  import metrika from '../../../counters/metrika.js';
6
5
  import { MetrikaCounter } from '../../../counters/utils';
7
- // @ts-ignore
8
6
  import { Save as SaveIcon } from '../../../icons/Save';
9
7
  import { SaveFilled } from '../../../icons/SaveFilled';
10
- import { DefaultEventNames } from '../../../models/common';
11
8
  import { block } from '../../../utils/cn';
12
9
  import { postLikeStatus } from '../../../utils/common';
10
+ // @ts-ignore
13
11
  import '../PostInfo.css';
14
12
  const ICON_SIZE = 16;
15
13
  const b = block('post-info');
@@ -27,7 +25,6 @@ const b = block('post-info');
27
25
  */
28
26
  export const Save = ({ title, postId, hasUserLike, handleUserLike, metrikaGoal, size, theme, dataQa, }) => {
29
27
  const { uid } = useContext(UserContext);
30
- const handleAnalytics = useAnalytics(DefaultEventNames.SaveButton);
31
28
  return (React.createElement("div", { className: b('item', { size }), onClick: (event) => {
32
29
  // both preventDefault and stopImmediatePropagation required to work properly
33
30
  // https://stackoverflow.com/questions/24415631/reactjs-syntheticevent-stoppropagation-only-works-with-react-events
@@ -39,7 +36,6 @@ export const Save = ({ title, postId, hasUserLike, handleUserLike, metrikaGoal,
39
36
  postLikeStatus(postId, Boolean(hasUserLike));
40
37
  handleUserLike();
41
38
  metrika.reachGoal(MetrikaCounter.CrossSite, metrikaGoal);
42
- handleAnalytics();
43
39
  }, "data-qa": `${dataQa ? dataQa + '-' : ''}save` },
44
40
  React.createElement("div", { className: b('content', { cursor: Boolean(uid), theme }) },
45
41
  React.createElement("span", { className: b('icon') },
@@ -2,10 +2,6 @@ import React from 'react';
2
2
  import '../PostInfo.css';
3
3
  type SharingProps = {
4
4
  theme?: 'light' | 'dark';
5
- /**
6
- * @deprecated Metrika will be deleted after launch of analyticsEvents
7
- * https://st.yandex-team.ru/PAGECTR-7
8
- */
9
5
  metrikaGoal?: string;
10
6
  };
11
7
  export declare const Sharing: React.FC<SharingProps>;
@@ -1,6 +1,5 @@
1
- import { useAnalytics } from '@gravity-ui/page-constructor';
1
+ import React, { useContext } from 'react';
2
2
  import { SharePopover } from '@gravity-ui/uikit';
3
- import React, { useCallback, useContext } from 'react';
4
3
  import { MobileContext } from '../../../contexts/MobileContext';
5
4
  import { PostPageContext } from '../../../contexts/PostPageContext';
6
5
  import { RouterContext } from '../../../contexts/RouterContext';
@@ -8,7 +7,6 @@ import metrika from '../../../counters/metrika.js';
8
7
  import { MetrikaCounter } from '../../../counters/utils';
9
8
  import { Keyset, i18 } from '../../../i18n';
10
9
  import { ShareArrowUp } from '../../../icons/ShareArrowUp';
11
- import { DefaultEventNames } from '../../../models/common';
12
10
  import { block } from '../../../utils/cn';
13
11
  import { getAbsolutePath } from '../../../utils/common';
14
12
  // @ts-ignore
@@ -18,15 +16,10 @@ export const Sharing = ({ theme, metrikaGoal }) => {
18
16
  const router = useContext(RouterContext);
19
17
  const isMobile = useContext(MobileContext);
20
18
  const { shareOptions } = useContext(PostPageContext);
21
- const handleAnalyticsGlobal = useAnalytics(DefaultEventNames.ShareButton);
22
- const handleMetrika = useCallback(() => {
19
+ const handleMetrika = () => {
23
20
  metrika.reachGoal(MetrikaCounter.CrossSite, metrikaGoal);
24
- }, [metrikaGoal]);
25
- const handleAnalytics = useCallback(() => {
26
- handleAnalyticsGlobal();
27
- handleMetrika();
28
- }, [handleAnalyticsGlobal, handleMetrika]);
21
+ };
29
22
  return (React.createElement("div", { className: b('item') },
30
23
  React.createElement("span", { className: b('icon') },
31
- React.createElement(SharePopover, { url: getAbsolutePath(router), className: b('share'), iconClass: b('share-icon'), switcherClassName: b('switcher', { theme }), tooltipClassName: b('popup'), useWebShareApi: isMobile, direction: 'column', buttonTitle: i18(Keyset.ActionShare), customIcon: ShareArrowUp, placement: "bottom", openByHover: false, shareOptions: shareOptions, handleMetrika: handleAnalytics }))));
24
+ React.createElement(SharePopover, { url: getAbsolutePath(router), className: b('share'), iconClass: b('share-icon'), switcherClassName: b('switcher', { theme }), tooltipClassName: b('popup'), useWebShareApi: isMobile, direction: 'column', buttonTitle: i18(Keyset.ActionShare), customIcon: ShareArrowUp, placement: "bottom", openByHover: false, shareOptions: shareOptions, handleMetrika: handleMetrika }))));
32
25
  };
@@ -1,11 +1,11 @@
1
1
  import React from 'react';
2
2
  import { CardLayoutBlock } from '@gravity-ui/page-constructor';
3
3
  import { Button } from '@gravity-ui/uikit';
4
- import { i18, Keyset } from '../../i18n';
4
+ import { Keyset, i18 } from '../../i18n';
5
+ import { block } from '../../utils/cn';
5
6
  import { Paginator } from '../Paginator/Paginator';
6
7
  import { PostCard } from '../PostCard/PostCard';
7
8
  import { PostsEmpty } from '../PostsEmpty/PostsEmpty';
8
- import { block } from '../../utils/cn';
9
9
  import './Posts.css';
10
10
  const b = block('posts');
11
11
  export const Posts = ({ containerId, pinnedPostOnPage, currentPage, postsOnPage, isShowMoreVisible, errorShowMore, postCountOnPage, perPageInQuery, isFetching, isShowMoreFetching, handleShowMore, handlePageChange, pageCountForShowSupportButtons, }) => (React.createElement("div", { className: b() },
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
+ import { Keyset, i18 } from '../../i18n';
2
3
  import { block } from '../../utils/cn';
3
4
  import './PostsEmpty.css';
4
- import { i18, Keyset } from '../../i18n';
5
5
  const b = block('posts-empty');
6
6
  export const PostsEmpty = () => (React.createElement("div", { className: b('container') },
7
7
  React.createElement("div", { className: b('title') }, i18(Keyset.TitleEmptyContainer)),
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { Button } from '@gravity-ui/uikit';
3
- import { i18, Keyset } from '../../i18n';
3
+ import { Keyset, i18 } from '../../i18n';
4
4
  import { block } from '../../utils/cn';
5
5
  import './PostError.css';
6
6
  const b = block('posts-error');
@@ -1,12 +1,12 @@
1
- import React, { useRef, useEffect, useState } from 'react';
1
+ import React, { useEffect, useRef, useState } from 'react';
2
2
  import { debounce as lodashDebounce } from 'lodash';
3
3
  import { TextInput } from '@gravity-ui/uikit';
4
- import { ButtonWithIcon } from '../ButtonWithIcon/ButtonWithIcon';
5
4
  import { useIsIPhone } from '../../hooks/useIsIPhone';
5
+ import { Keyset, i18 } from '../../i18n';
6
6
  import { Close } from '../../icons/Close';
7
7
  import { SearchIcon } from '../../icons/SearchIcon';
8
- import { i18, Keyset } from '../../i18n';
9
8
  import { block } from '../../utils/cn';
9
+ import { ButtonWithIcon } from '../ButtonWithIcon/ButtonWithIcon';
10
10
  import './Search.css';
11
11
  const b = block('search');
12
12
  const SEARCH_ICON_SIZE = 16;
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
- import { block } from '../../utils/cn';
3
2
  import { DEFAULT_PADDINGS } from '../../constants';
3
+ import { block } from '../../utils/cn';
4
4
  import './Wrapper.css';
5
5
  const b = block('wrapper');
6
6
  export const Wrapper = ({ children, paddings = DEFAULT_PADDINGS, className, dataQa, }) => (React.createElement("section", { className: b({
@@ -1,8 +1,7 @@
1
1
  import React from 'react';
2
- import { AnalyticsContextProps } from '@gravity-ui/page-constructor';
2
+ import { DeviceContextProps } from '../contexts/DeviceContext';
3
3
  import { RouterContextProps } from '../contexts/RouterContext';
4
4
  import { UserContextProps } from '../contexts/UserContext';
5
- import { DeviceContextProps } from '../contexts/DeviceContext';
6
5
  import { ThemeValueType } from '../contexts/theme/ThemeValueContext';
7
6
  import { Locale } from '../models/locale';
8
7
  export interface BlogConstructorProviderProps {
@@ -12,7 +11,6 @@ export interface BlogConstructorProviderProps {
12
11
  theme?: ThemeValueType;
13
12
  user?: UserContextProps;
14
13
  device?: DeviceContextProps;
15
- analytics?: AnalyticsContextProps;
16
14
  children?: React.ReactNode;
17
15
  }
18
16
  export declare const BlogConstructorProvider: React.FC<BlogConstructorProviderProps>;
@@ -1,13 +1,12 @@
1
1
  import React, { Fragment } from 'react';
2
- import { AnalyticsContext } from '@gravity-ui/page-constructor';
3
- import { MobileContext } from '../contexts/MobileContext';
2
+ import { DEFAULT_THEME } from '../constants';
3
+ import { DeviceContext } from '../contexts/DeviceContext';
4
4
  import { LocaleContext } from '../contexts/LocaleContext';
5
+ import { MobileContext } from '../contexts/MobileContext';
5
6
  import { RouterContext } from '../contexts/RouterContext';
6
7
  import { UserContext } from '../contexts/UserContext';
7
- import { DeviceContext } from '../contexts/DeviceContext';
8
8
  import { ThemeValueContext } from '../contexts/theme/ThemeValueContext';
9
- import { DEFAULT_THEME } from '../constants';
10
- export const BlogConstructorProvider = ({ isMobile, locale = {}, router = {}, theme = DEFAULT_THEME, user = {}, device = {}, analytics = {}, children, }) => {
9
+ export const BlogConstructorProvider = ({ isMobile, locale = {}, router = {}, theme = DEFAULT_THEME, user = {}, device = {}, children, }) => {
11
10
  const context = [
12
11
  React.createElement(ThemeValueContext.Provider, { value: { themeValue: theme }, key: "theme-context" }),
13
12
  React.createElement(LocaleContext.Provider, { value: { locale }, key: "locale-context" }),
@@ -15,7 +14,6 @@ export const BlogConstructorProvider = ({ isMobile, locale = {}, router = {}, th
15
14
  React.createElement(MobileContext.Provider, { value: Boolean(isMobile), key: "is-mobile-context" }),
16
15
  React.createElement(UserContext.Provider, { value: user, key: "user-context" }),
17
16
  React.createElement(DeviceContext.Provider, { value: device, key: "device-context" }),
18
- React.createElement(AnalyticsContext.Provider, { value: analytics, key: "analytics-context" }),
19
17
  ].reduceRight((prev, provider) => React.cloneElement(provider, {}, prev), children);
20
18
  return React.createElement(Fragment, null, context);
21
19
  };
@@ -1,15 +1,15 @@
1
- import { BlockType } from '../models/common';
1
+ import { Author } from '../blocks/Author/Author';
2
+ import { Banner } from '../blocks/Banner/Banner';
3
+ import { CTA } from '../blocks/CTA/CTA';
4
+ import { ColoredText } from '../blocks/ColoredText/ColoredText';
5
+ import { Feed } from '../blocks/Feed/Feed';
2
6
  import { Header } from '../blocks/Header/Header';
3
- import { YFM } from '../blocks/YFM/YFM';
4
7
  import { Layout } from '../blocks/Layout/Layout';
5
8
  import { Media } from '../blocks/Media/Media';
6
- import { CTA } from '../blocks/CTA/CTA';
7
- import { ColoredText } from '../blocks/ColoredText/ColoredText';
8
- import { Author } from '../blocks/Author/Author';
9
- import { Suggest } from '../blocks/Suggest/Suggest';
10
- import { Banner } from '../blocks/Banner/Banner';
11
9
  import { Meta } from '../blocks/Meta/Meta';
12
- import { Feed } from '../blocks/Feed/Feed';
10
+ import { Suggest } from '../blocks/Suggest/Suggest';
11
+ import { YFM } from '../blocks/YFM/YFM';
12
+ import { BlockType } from '../models/common';
13
13
  const blocks = {
14
14
  [BlockType.YFM]: YFM,
15
15
  [BlockType.Layout]: Layout,
@@ -1,5 +1,5 @@
1
- import { PageContent, PageConstructorProviderProps, NavigationData } from '@gravity-ui/page-constructor';
2
- import { Tag, PostsProps, ToggleLikeCallbackType, MetaProps, GetPostsType, SetQueryType, Service } from '../../models/common';
1
+ import { NavigationData, PageConstructorProviderProps, PageContent } from '@gravity-ui/page-constructor';
2
+ import { GetPostsType, MetaProps, PostsProps, Service, SetQueryType, Tag, ToggleLikeCallbackType } from '../../models/common';
3
3
  import './BlogPage.css';
4
4
  export type BlogPageProps = {
5
5
  content: PageContent;
@@ -1,9 +1,9 @@
1
1
  import React from 'react';
2
2
  import { PageConstructor, PageConstructorProvider, } from '@gravity-ui/page-constructor';
3
- import { FeedContext } from '../../contexts/FeedContext';
4
- import { LikesContext } from '../../contexts/LikesContext';
5
3
  import { MetaWrapper } from '../../components/MetaWrapper/MetaWrapper';
6
4
  import componentMap from '../../constructor/blocksMap';
5
+ import { FeedContext } from '../../contexts/FeedContext';
6
+ import { LikesContext } from '../../contexts/LikesContext';
7
7
  import './BlogPage.css';
8
8
  export const BlogPage = ({ content, posts, tags, services, getPosts, metaData, toggleLike, navigation, settings, pageCountForShowSupportButtons, }) => (React.createElement("main", null,
9
9
  React.createElement(LikesContext.Provider, { value: {
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
- import { PageContent, PageConstructorProviderProps, NavigationData } from '@gravity-ui/page-constructor';
2
+ import { NavigationData, PageConstructorProviderProps, PageContent } from '@gravity-ui/page-constructor';
3
3
  import { ShareOptions } from '@gravity-ui/uikit';
4
- import { PostData, ToggleLikeCallbackType, MetaProps } from '../../models/common';
4
+ import { MetaProps, PostData, ToggleLikeCallbackType } from '../../models/common';
5
5
  import './BlogPostPage.css';
6
6
  export interface BlogPostPageProps {
7
7
  suggestedPosts: PostData[];
@@ -1,10 +1,10 @@
1
1
  import React from 'react';
2
2
  import { PageConstructor, PageConstructorProvider, } from '@gravity-ui/page-constructor';
3
+ import { MetaWrapper } from '../../components/MetaWrapper/MetaWrapper';
3
4
  import componentMap from '../../constructor/blocksMap';
4
- import { PostPageContext } from '../../contexts/PostPageContext';
5
5
  import { LikesContext } from '../../contexts/LikesContext';
6
+ import { PostPageContext } from '../../contexts/PostPageContext';
6
7
  import { useLikes } from '../../hooks/useLikes';
7
- import { MetaWrapper } from '../../components/MetaWrapper/MetaWrapper';
8
8
  import './BlogPostPage.css';
9
9
  export const BlogPostPage = ({ metaData, suggestedPosts, likes, content, post, settings, navigation, shareOptions, }) => {
10
10
  const { hasUserLike, likesCount, handleLike } = useLikes({
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { PostData, Tag, SetQueryType, GetPostsType, Service } from '../models/common';
2
+ import { GetPostsType, PostData, Service, SetQueryType, Tag } from '../models/common';
3
3
  export interface FeedContextProps {
4
4
  posts?: PostData[];
5
5
  pinnedPost?: PostData;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
+ import { DEFAULT_THEME } from '../../constants';
2
3
  import { ThemeContext } from './ThemeContext';
3
4
  import { ThemeValueContext } from './ThemeValueContext';
4
- import { DEFAULT_THEME } from '../../constants';
5
5
  export class ThemeProvider extends React.Component {
6
6
  constructor() {
7
7
  super(...arguments);