@gravity-ui/blog-constructor 1.0.0-alpha.1
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +231 -0
- package/LICENSE +21 -0
- package/README.md +14 -0
- package/build/cjs/blocks/Author/Author.css +31 -0
- package/build/cjs/blocks/Author/Author.d.ts +3 -0
- package/build/cjs/blocks/Author/Author.js +60 -0
- package/build/cjs/blocks/Banner/Banner.css +58 -0
- package/build/cjs/blocks/Banner/Banner.d.ts +3 -0
- package/build/cjs/blocks/Banner/Banner.js +51 -0
- package/build/cjs/blocks/CTA/CTA.css +56 -0
- package/build/cjs/blocks/CTA/CTA.d.ts +3 -0
- package/build/cjs/blocks/CTA/CTA.js +44 -0
- package/build/cjs/blocks/ColoredText/ColoredText.css +28 -0
- package/build/cjs/blocks/ColoredText/ColoredText.d.ts +3 -0
- package/build/cjs/blocks/ColoredText/ColoredText.js +37 -0
- package/build/cjs/blocks/Feed/Feed.d.ts +3 -0
- package/build/cjs/blocks/Feed/Feed.js +183 -0
- package/build/cjs/blocks/Feed/reducer.d.ts +65 -0
- package/build/cjs/blocks/Feed/reducer.js +40 -0
- package/build/cjs/blocks/Header/Header.d.ts +3 -0
- package/build/cjs/blocks/Header/Header.js +63 -0
- package/build/cjs/blocks/Layout/Layout.css +22 -0
- package/build/cjs/blocks/Layout/Layout.d.ts +3 -0
- package/build/cjs/blocks/Layout/Layout.js +78 -0
- package/build/cjs/blocks/Media/Media.css +41 -0
- package/build/cjs/blocks/Media/Media.d.ts +3 -0
- package/build/cjs/blocks/Media/Media.js +38 -0
- package/build/cjs/blocks/Meta/Meta.css +7 -0
- package/build/cjs/blocks/Meta/Meta.d.ts +3 -0
- package/build/cjs/blocks/Meta/Meta.js +66 -0
- package/build/cjs/blocks/Suggest/Suggest.d.ts +12 -0
- package/build/cjs/blocks/Suggest/Suggest.js +61 -0
- package/build/cjs/blocks/YFM/YFM.d.ts +3 -0
- package/build/cjs/blocks/YFM/YFM.js +24 -0
- package/build/cjs/blocks/constants.d.ts +8 -0
- package/build/cjs/blocks/constants.js +8 -0
- package/build/cjs/components/ButtonWithIcon/ButtonWithIcon.css +76 -0
- package/build/cjs/components/ButtonWithIcon/ButtonWithIcon.d.ts +12 -0
- package/build/cjs/components/ButtonWithIcon/ButtonWithIcon.js +13 -0
- package/build/cjs/components/FeedHeader/FeedHeader.css +54 -0
- package/build/cjs/components/FeedHeader/FeedHeader.d.ts +8 -0
- package/build/cjs/components/FeedHeader/FeedHeader.js +24 -0
- package/build/cjs/components/FeedHeader/components/Controls/Controls.css +106 -0
- package/build/cjs/components/FeedHeader/components/Controls/Controls.d.ts +16 -0
- package/build/cjs/components/FeedHeader/components/Controls/Controls.js +106 -0
- package/build/cjs/components/FeedHeader/components/Controls/customRenders.d.ts +11 -0
- package/build/cjs/components/FeedHeader/components/Controls/customRenders.js +22 -0
- package/build/cjs/components/FeedHeader/components/CustomSelectOption/CustomSelectOption.css +14 -0
- package/build/cjs/components/FeedHeader/components/CustomSelectOption/CustomSelectOption.d.ts +8 -0
- package/build/cjs/components/FeedHeader/components/CustomSelectOption/CustomSelectOption.js +13 -0
- package/build/cjs/components/FeedHeader/components/CustomSwitcher/CustomSwitcher.css +53 -0
- package/build/cjs/components/FeedHeader/components/CustomSwitcher/CustomSwitcher.d.ts +11 -0
- package/build/cjs/components/FeedHeader/components/CustomSwitcher/CustomSwitcher.js +47 -0
- package/build/cjs/components/MetaWrapper/MetaWrapper.d.ts +10 -0
- package/build/cjs/components/MetaWrapper/MetaWrapper.js +18 -0
- package/build/cjs/components/Paginator/Paginator.css +54 -0
- package/build/cjs/components/Paginator/Paginator.d.ts +2 -0
- package/build/cjs/components/Paginator/Paginator.js +118 -0
- package/build/cjs/components/Paginator/components/NavigationButton.d.ts +6 -0
- package/build/cjs/components/Paginator/components/NavigationButton.js +13 -0
- package/build/cjs/components/Paginator/components/PaginatorItem.d.ts +2 -0
- package/build/cjs/components/Paginator/components/PaginatorItem.js +15 -0
- package/build/cjs/components/Paginator/types.d.ts +29 -0
- package/build/cjs/components/Paginator/types.js +8 -0
- package/build/cjs/components/Paginator/utils.d.ts +3 -0
- package/build/cjs/components/Paginator/utils.js +32 -0
- package/build/cjs/components/PostCard/PostCard.css +85 -0
- package/build/cjs/components/PostCard/PostCard.d.ts +12 -0
- package/build/cjs/components/PostCard/PostCard.js +60 -0
- package/build/cjs/components/PostInfo/PostInfo.css +88 -0
- package/build/cjs/components/PostInfo/PostInfo.d.ts +28 -0
- package/build/cjs/components/PostInfo/PostInfo.js +55 -0
- package/build/cjs/components/PostInfo/SuggestPostInfo.d.ts +27 -0
- package/build/cjs/components/PostInfo/SuggestPostInfo.js +41 -0
- package/build/cjs/components/PostInfo/components/Date.d.ts +7 -0
- package/build/cjs/components/PostInfo/components/Date.js +36 -0
- package/build/cjs/components/PostInfo/components/ReadingTime.d.ts +7 -0
- package/build/cjs/components/PostInfo/components/ReadingTime.js +18 -0
- package/build/cjs/components/PostInfo/components/Save.d.ts +25 -0
- package/build/cjs/components/PostInfo/components/Save.js +73 -0
- package/build/cjs/components/PostInfo/components/Sharing.d.ts +7 -0
- package/build/cjs/components/PostInfo/components/Sharing.js +54 -0
- package/build/cjs/components/Posts/Posts.css +28 -0
- package/build/cjs/components/Posts/Posts.d.ts +19 -0
- package/build/cjs/components/Posts/Posts.js +32 -0
- package/build/cjs/components/PostsEmpty/PostsEmpty.css +25 -0
- package/build/cjs/components/PostsEmpty/PostsEmpty.d.ts +2 -0
- package/build/cjs/components/PostsEmpty/PostsEmpty.js +14 -0
- package/build/cjs/components/PostsError/PostError.css +30 -0
- package/build/cjs/components/PostsError/PostsError.d.ts +6 -0
- package/build/cjs/components/PostsError/PostsError.js +20 -0
- package/build/cjs/components/Search/Search.css +33 -0
- package/build/cjs/components/Search/Search.d.ts +15 -0
- package/build/cjs/components/Search/Search.js +67 -0
- package/build/cjs/components/Wrapper/Wrapper.css +32 -0
- package/build/cjs/components/Wrapper/Wrapper.d.ts +10 -0
- package/build/cjs/components/Wrapper/Wrapper.js +17 -0
- package/build/cjs/configure.d.ts +5 -0
- package/build/cjs/configure.js +8 -0
- package/build/cjs/constants.d.ts +27 -0
- package/build/cjs/constants.js +34 -0
- package/build/cjs/constructor/BlogConstructorProvider.d.ts +16 -0
- package/build/cjs/constructor/BlogConstructorProvider.js +46 -0
- package/build/cjs/constructor/blocksMap.d.ts +18 -0
- package/build/cjs/constructor/blocksMap.js +30 -0
- package/build/cjs/containers/BlogPage/BlogPage.css +21 -0
- package/build/cjs/containers/BlogPage/BlogPage.d.ts +15 -0
- package/build/cjs/containers/BlogPage/BlogPage.js +30 -0
- package/build/cjs/containers/BlogPostPage/BlogPostPage.css +251 -0
- package/build/cjs/containers/BlogPostPage/BlogPostPage.d.ts +18 -0
- package/build/cjs/containers/BlogPostPage/BlogPostPage.js +42 -0
- package/build/cjs/contexts/DeviceContext.d.ts +4 -0
- package/build/cjs/contexts/DeviceContext.js +8 -0
- package/build/cjs/contexts/FeedContext.d.ts +13 -0
- package/build/cjs/contexts/FeedContext.js +8 -0
- package/build/cjs/contexts/LikesContext.d.ts +7 -0
- package/build/cjs/contexts/LikesContext.js +8 -0
- package/build/cjs/contexts/LocaleContext.d.ts +6 -0
- package/build/cjs/contexts/LocaleContext.js +16 -0
- package/build/cjs/contexts/MobileContext.d.ts +2 -0
- package/build/cjs/contexts/MobileContext.js +8 -0
- package/build/cjs/contexts/PostPageContext.d.ts +14 -0
- package/build/cjs/contexts/PostPageContext.js +8 -0
- package/build/cjs/contexts/RouterContext.d.ts +9 -0
- package/build/cjs/contexts/RouterContext.js +8 -0
- package/build/cjs/contexts/UserContext.d.ts +18 -0
- package/build/cjs/contexts/UserContext.js +8 -0
- package/build/cjs/contexts/theme/ThemeContext.d.ts +8 -0
- package/build/cjs/contexts/theme/ThemeContext.js +13 -0
- package/build/cjs/contexts/theme/ThemeProvider.d.ts +23 -0
- package/build/cjs/contexts/theme/ThemeProvider.js +51 -0
- package/build/cjs/contexts/theme/ThemeValueContext.d.ts +7 -0
- package/build/cjs/contexts/theme/ThemeValueContext.js +11 -0
- package/build/cjs/contexts/theme/index.d.ts +6 -0
- package/build/cjs/contexts/theme/index.js +22 -0
- package/build/cjs/contexts/theme/useTheme.d.ts +2 -0
- package/build/cjs/contexts/theme/useTheme.js +13 -0
- package/build/cjs/contexts/theme/useThemeValue.d.ts +2 -0
- package/build/cjs/contexts/theme/useThemeValue.js +13 -0
- package/build/cjs/contexts/theme/withTheme.d.ts +6 -0
- package/build/cjs/contexts/theme/withTheme.js +21 -0
- package/build/cjs/contexts/theme/withThemeValue.d.ts +6 -0
- package/build/cjs/contexts/theme/withThemeValue.js +21 -0
- package/build/cjs/counters/metrika.d.ts +59 -0
- package/build/cjs/counters/metrika.js +170 -0
- package/build/cjs/counters/utils.d.ts +5 -0
- package/build/cjs/counters/utils.js +9 -0
- package/build/cjs/hooks/useIsIPhone.d.ts +1 -0
- package/build/cjs/hooks/useIsIPhone.js +10 -0
- package/build/cjs/hooks/useLikes.d.ts +15 -0
- package/build/cjs/hooks/useLikes.js +35 -0
- package/build/cjs/i18n/index.d.ts +22 -0
- package/build/cjs/i18n/index.js +74 -0
- package/build/cjs/icons/Close.d.ts +2 -0
- package/build/cjs/icons/Close.js +11 -0
- package/build/cjs/icons/DropdownArrow.d.ts +2 -0
- package/build/cjs/icons/DropdownArrow.js +11 -0
- package/build/cjs/icons/Save.d.ts +2 -0
- package/build/cjs/icons/Save.js +11 -0
- package/build/cjs/icons/SaveFilled.d.ts +2 -0
- package/build/cjs/icons/SaveFilled.js +11 -0
- package/build/cjs/icons/SearchIcon.d.ts +2 -0
- package/build/cjs/icons/SearchIcon.js +11 -0
- package/build/cjs/icons/ShareArrowUp.d.ts +2 -0
- package/build/cjs/icons/ShareArrowUp.js +11 -0
- package/build/cjs/icons/Time.d.ts +2 -0
- package/build/cjs/icons/Time.js +11 -0
- package/build/cjs/index.d.ts +7 -0
- package/build/cjs/index.js +29 -0
- package/build/cjs/internal-typings/bem-cn-lite.d.ts +17 -0
- package/build/cjs/internal-typings/global.d.ts +5 -0
- package/build/cjs/models/blocks.d.ts +84 -0
- package/build/cjs/models/blocks.js +2 -0
- package/build/cjs/models/common.d.ts +151 -0
- package/build/cjs/models/common.js +22 -0
- package/build/cjs/models/locale.d.ts +29 -0
- package/build/cjs/models/locale.js +14 -0
- package/build/cjs/models/paddings.d.ts +16 -0
- package/build/cjs/models/paddings.js +10 -0
- package/build/cjs/utils/cn.d.ts +4 -0
- package/build/cjs/utils/cn.js +12 -0
- package/build/cjs/utils/common.d.ts +42 -0
- package/build/cjs/utils/common.js +120 -0
- package/build/cjs/utils/date.d.ts +13 -0
- package/build/cjs/utils/date.js +59 -0
- package/build/cjs/utils/svg.d.ts +3 -0
- package/build/cjs/utils/svg.js +7 -0
- package/build/esm/blocks/Author/Author.css +31 -0
- package/build/esm/blocks/Author/Author.d.ts +4 -0
- package/build/esm/blocks/Author/Author.js +34 -0
- package/build/esm/blocks/Banner/Banner.css +58 -0
- package/build/esm/blocks/Banner/Banner.d.ts +4 -0
- package/build/esm/blocks/Banner/Banner.js +45 -0
- package/build/esm/blocks/CTA/CTA.css +56 -0
- package/build/esm/blocks/CTA/CTA.d.ts +4 -0
- package/build/esm/blocks/CTA/CTA.js +38 -0
- package/build/esm/blocks/ColoredText/ColoredText.css +28 -0
- package/build/esm/blocks/ColoredText/ColoredText.d.ts +4 -0
- package/build/esm/blocks/ColoredText/ColoredText.js +31 -0
- package/build/esm/blocks/Feed/Feed.d.ts +3 -0
- package/build/esm/blocks/Feed/Feed.js +153 -0
- package/build/esm/blocks/Feed/reducer.d.ts +65 -0
- package/build/esm/blocks/Feed/reducer.js +36 -0
- package/build/esm/blocks/Header/Header.d.ts +3 -0
- package/build/esm/blocks/Header/Header.js +36 -0
- package/build/esm/blocks/Layout/Layout.css +22 -0
- package/build/esm/blocks/Layout/Layout.d.ts +4 -0
- package/build/esm/blocks/Layout/Layout.js +52 -0
- package/build/esm/blocks/Media/Media.css +41 -0
- package/build/esm/blocks/Media/Media.d.ts +4 -0
- package/build/esm/blocks/Media/Media.js +32 -0
- package/build/esm/blocks/Meta/Meta.css +7 -0
- package/build/esm/blocks/Meta/Meta.d.ts +4 -0
- package/build/esm/blocks/Meta/Meta.js +40 -0
- package/build/esm/blocks/Suggest/Suggest.d.ts +12 -0
- package/build/esm/blocks/Suggest/Suggest.js +34 -0
- package/build/esm/blocks/YFM/YFM.d.ts +3 -0
- package/build/esm/blocks/YFM/YFM.js +17 -0
- package/build/esm/blocks/constants.d.ts +8 -0
- package/build/esm/blocks/constants.js +5 -0
- package/build/esm/components/ButtonWithIcon/ButtonWithIcon.css +76 -0
- package/build/esm/components/ButtonWithIcon/ButtonWithIcon.d.ts +13 -0
- package/build/esm/components/ButtonWithIcon/ButtonWithIcon.js +7 -0
- package/build/esm/components/FeedHeader/FeedHeader.css +54 -0
- package/build/esm/components/FeedHeader/FeedHeader.d.ts +9 -0
- package/build/esm/components/FeedHeader/FeedHeader.js +18 -0
- package/build/esm/components/FeedHeader/components/Controls/Controls.css +106 -0
- package/build/esm/components/FeedHeader/components/Controls/Controls.d.ts +17 -0
- package/build/esm/components/FeedHeader/components/Controls/Controls.js +77 -0
- package/build/esm/components/FeedHeader/components/Controls/customRenders.d.ts +12 -0
- package/build/esm/components/FeedHeader/components/Controls/customRenders.js +14 -0
- package/build/esm/components/FeedHeader/components/CustomSelectOption/CustomSelectOption.css +14 -0
- package/build/esm/components/FeedHeader/components/CustomSelectOption/CustomSelectOption.d.ts +9 -0
- package/build/esm/components/FeedHeader/components/CustomSelectOption/CustomSelectOption.js +7 -0
- package/build/esm/components/FeedHeader/components/CustomSwitcher/CustomSwitcher.css +53 -0
- package/build/esm/components/FeedHeader/components/CustomSwitcher/CustomSwitcher.d.ts +12 -0
- package/build/esm/components/FeedHeader/components/CustomSwitcher/CustomSwitcher.js +21 -0
- package/build/esm/components/MetaWrapper/MetaWrapper.d.ts +10 -0
- package/build/esm/components/MetaWrapper/MetaWrapper.js +11 -0
- package/build/esm/components/Paginator/Paginator.css +54 -0
- package/build/esm/components/Paginator/Paginator.d.ts +3 -0
- package/build/esm/components/Paginator/Paginator.js +89 -0
- package/build/esm/components/Paginator/components/NavigationButton.d.ts +7 -0
- package/build/esm/components/Paginator/components/NavigationButton.js +7 -0
- package/build/esm/components/Paginator/components/PaginatorItem.d.ts +3 -0
- package/build/esm/components/Paginator/components/PaginatorItem.js +9 -0
- package/build/esm/components/Paginator/types.d.ts +29 -0
- package/build/esm/components/Paginator/types.js +5 -0
- package/build/esm/components/Paginator/utils.d.ts +3 -0
- package/build/esm/components/Paginator/utils.js +27 -0
- package/build/esm/components/PostCard/PostCard.css +85 -0
- package/build/esm/components/PostCard/PostCard.d.ts +13 -0
- package/build/esm/components/PostCard/PostCard.js +34 -0
- package/build/esm/components/PostInfo/PostInfo.css +88 -0
- package/build/esm/components/PostInfo/PostInfo.d.ts +29 -0
- package/build/esm/components/PostInfo/PostInfo.js +29 -0
- package/build/esm/components/PostInfo/SuggestPostInfo.d.ts +28 -0
- package/build/esm/components/PostInfo/SuggestPostInfo.js +35 -0
- package/build/esm/components/PostInfo/components/Date.d.ts +8 -0
- package/build/esm/components/PostInfo/components/Date.js +10 -0
- package/build/esm/components/PostInfo/components/ReadingTime.d.ts +8 -0
- package/build/esm/components/PostInfo/components/ReadingTime.js +12 -0
- package/build/esm/components/PostInfo/components/Save.d.ts +26 -0
- package/build/esm/components/PostInfo/components/Save.js +44 -0
- package/build/esm/components/PostInfo/components/Sharing.d.ts +8 -0
- package/build/esm/components/PostInfo/components/Sharing.js +25 -0
- package/build/esm/components/Posts/Posts.css +28 -0
- package/build/esm/components/Posts/Posts.d.ts +20 -0
- package/build/esm/components/Posts/Posts.js +26 -0
- package/build/esm/components/PostsEmpty/PostsEmpty.css +25 -0
- package/build/esm/components/PostsEmpty/PostsEmpty.d.ts +3 -0
- package/build/esm/components/PostsEmpty/PostsEmpty.js +8 -0
- package/build/esm/components/PostsError/PostError.css +30 -0
- package/build/esm/components/PostsError/PostsError.d.ts +7 -0
- package/build/esm/components/PostsError/PostsError.js +14 -0
- package/build/esm/components/Search/Search.css +33 -0
- package/build/esm/components/Search/Search.d.ts +16 -0
- package/build/esm/components/Search/Search.js +41 -0
- package/build/esm/components/Wrapper/Wrapper.css +32 -0
- package/build/esm/components/Wrapper/Wrapper.d.ts +11 -0
- package/build/esm/components/Wrapper/Wrapper.js +11 -0
- package/build/esm/configure.d.ts +5 -0
- package/build/esm/configure.js +4 -0
- package/build/esm/constants.d.ts +27 -0
- package/build/esm/constants.js +31 -0
- package/build/esm/constructor/BlogConstructorProvider.d.ts +16 -0
- package/build/esm/constructor/BlogConstructorProvider.js +19 -0
- package/build/esm/constructor/blocksMap.d.ts +18 -0
- package/build/esm/constructor/blocksMap.js +28 -0
- package/build/esm/containers/BlogPage/BlogPage.css +21 -0
- package/build/esm/containers/BlogPage/BlogPage.d.ts +16 -0
- package/build/esm/containers/BlogPage/BlogPage.js +24 -0
- package/build/esm/containers/BlogPostPage/BlogPostPage.css +251 -0
- package/build/esm/containers/BlogPostPage/BlogPostPage.d.ts +19 -0
- package/build/esm/containers/BlogPostPage/BlogPostPage.js +36 -0
- package/build/esm/contexts/DeviceContext.d.ts +4 -0
- package/build/esm/contexts/DeviceContext.js +2 -0
- package/build/esm/contexts/FeedContext.d.ts +13 -0
- package/build/esm/contexts/FeedContext.js +2 -0
- package/build/esm/contexts/LikesContext.d.ts +7 -0
- package/build/esm/contexts/LikesContext.js +2 -0
- package/build/esm/contexts/LocaleContext.d.ts +6 -0
- package/build/esm/contexts/LocaleContext.js +10 -0
- package/build/esm/contexts/MobileContext.d.ts +2 -0
- package/build/esm/contexts/MobileContext.js +2 -0
- package/build/esm/contexts/PostPageContext.d.ts +14 -0
- package/build/esm/contexts/PostPageContext.js +2 -0
- package/build/esm/contexts/RouterContext.d.ts +9 -0
- package/build/esm/contexts/RouterContext.js +2 -0
- package/build/esm/contexts/UserContext.d.ts +18 -0
- package/build/esm/contexts/UserContext.js +2 -0
- package/build/esm/contexts/theme/ThemeContext.d.ts +8 -0
- package/build/esm/contexts/theme/ThemeContext.js +7 -0
- package/build/esm/contexts/theme/ThemeProvider.d.ts +23 -0
- package/build/esm/contexts/theme/ThemeProvider.js +44 -0
- package/build/esm/contexts/theme/ThemeValueContext.d.ts +7 -0
- package/build/esm/contexts/theme/ThemeValueContext.js +5 -0
- package/build/esm/contexts/theme/index.d.ts +6 -0
- package/build/esm/contexts/theme/index.js +6 -0
- package/build/esm/contexts/theme/useTheme.d.ts +2 -0
- package/build/esm/contexts/theme/useTheme.js +6 -0
- package/build/esm/contexts/theme/useThemeValue.d.ts +2 -0
- package/build/esm/contexts/theme/useThemeValue.js +6 -0
- package/build/esm/contexts/theme/withTheme.d.ts +6 -0
- package/build/esm/contexts/theme/withTheme.js +14 -0
- package/build/esm/contexts/theme/withThemeValue.d.ts +6 -0
- package/build/esm/contexts/theme/withThemeValue.js +14 -0
- package/build/esm/counters/metrika.d.ts +59 -0
- package/build/esm/counters/metrika.js +166 -0
- package/build/esm/counters/utils.d.ts +5 -0
- package/build/esm/counters/utils.js +6 -0
- package/build/esm/hooks/useIsIPhone.d.ts +1 -0
- package/build/esm/hooks/useIsIPhone.js +6 -0
- package/build/esm/hooks/useLikes.d.ts +15 -0
- package/build/esm/hooks/useLikes.js +31 -0
- package/build/esm/i18n/index.d.ts +22 -0
- package/build/esm/i18n/index.js +71 -0
- package/build/esm/icons/Close.d.ts +2 -0
- package/build/esm/icons/Close.js +4 -0
- package/build/esm/icons/DropdownArrow.d.ts +2 -0
- package/build/esm/icons/DropdownArrow.js +4 -0
- package/build/esm/icons/Save.d.ts +2 -0
- package/build/esm/icons/Save.js +4 -0
- package/build/esm/icons/SaveFilled.d.ts +2 -0
- package/build/esm/icons/SaveFilled.js +4 -0
- package/build/esm/icons/SearchIcon.d.ts +2 -0
- package/build/esm/icons/SearchIcon.js +4 -0
- package/build/esm/icons/ShareArrowUp.d.ts +2 -0
- package/build/esm/icons/ShareArrowUp.js +4 -0
- package/build/esm/icons/Time.d.ts +2 -0
- package/build/esm/icons/Time.js +4 -0
- package/build/esm/index.d.ts +7 -0
- package/build/esm/index.js +7 -0
- package/build/esm/internal-typings/bem-cn-lite.d.ts +17 -0
- package/build/esm/internal-typings/global.d.ts +5 -0
- package/build/esm/models/blocks.d.ts +84 -0
- package/build/esm/models/blocks.js +1 -0
- package/build/esm/models/common.d.ts +151 -0
- package/build/esm/models/common.js +19 -0
- package/build/esm/models/locale.d.ts +29 -0
- package/build/esm/models/locale.js +11 -0
- package/build/esm/models/paddings.d.ts +16 -0
- package/build/esm/models/paddings.js +7 -0
- package/build/esm/utils/cn.d.ts +4 -0
- package/build/esm/utils/cn.js +5 -0
- package/build/esm/utils/common.d.ts +42 -0
- package/build/esm/utils/common.js +107 -0
- package/build/esm/utils/date.d.ts +13 -0
- package/build/esm/utils/date.js +55 -0
- package/build/esm/utils/svg.d.ts +3 -0
- package/build/esm/utils/svg.js +4 -0
- package/package.json +140 -0
- package/server/data/config.d.ts +32 -0
- package/server/data/config.js +39 -0
- package/server/data/contentFilter.d.ts +27 -0
- package/server/data/contentFilter.js +61 -0
- package/server/data/createReadableContent.d.ts +17 -0
- package/server/data/createReadableContent.js +47 -0
- package/server/data/sanitizeMeta.d.ts +24 -0
- package/server/data/sanitizeMeta.js +18 -0
- package/server/data/transformPageContent.d.ts +21 -0
- package/server/data/transformPageContent.js +35 -0
- package/server/data/transformPost.d.ts +11 -0
- package/server/data/transformPost.js +34 -0
- package/server/index.d.ts +4 -0
- package/server/index.js +11 -0
- package/server/models/blocks.d.ts +84 -0
- package/server/models/blocks.js +2 -0
- package/server/models/common.d.ts +151 -0
- package/server/models/common.js +22 -0
- package/server/models/locale.d.ts +29 -0
- package/server/models/locale.js +14 -0
- package/server/models/paddings.d.ts +16 -0
- package/server/models/paddings.js +10 -0
- package/styles/fonts.css +195 -0
- package/styles/fonts.scss +223 -0
- package/styles/mixins.css +2 -0
- package/styles/mixins.scss +59 -0
- package/styles/root.css +21 -0
- package/styles/root.scss +25 -0
- package/styles/storybook/common.scss +29 -0
- package/styles/storybook/index.scss +21 -0
- package/styles/storybook/palette.scss +75 -0
- package/styles/storybook/typography.scss +139 -0
- package/styles/styles.css +196 -0
- package/styles/styles.scss +2 -0
- package/styles/variables.css +0 -0
- package/styles/variables.scss +7 -0
- package/styles/yfm.css +103 -0
- package/styles/yfm.scss +123 -0
@@ -0,0 +1,17 @@
|
|
1
|
+
declare module 'bem-cn-lite' {
|
2
|
+
interface Modifications {
|
3
|
+
[name: string]: string | boolean | number | undefined;
|
4
|
+
}
|
5
|
+
|
6
|
+
interface Inner {
|
7
|
+
(elem: string, mods: Modifications | null, mixin?: string): string;
|
8
|
+
(elem: string, mixin?: string): string;
|
9
|
+
(elem: string, mods: Modifications): string;
|
10
|
+
(mods: Modifications | null, mixin?: string): string;
|
11
|
+
(elem: string): string;
|
12
|
+
(mods: Modifications);
|
13
|
+
(): string;
|
14
|
+
}
|
15
|
+
|
16
|
+
export default function Outer(name: string): Inner;
|
17
|
+
}
|
@@ -0,0 +1,84 @@
|
|
1
|
+
import { ReactElement } from 'react';
|
2
|
+
import { ContentBlockProps, HeaderBlockProps, MediaProps as PCMediaProps, TextTheme } from '@gravity-ui/page-constructor';
|
3
|
+
import { PaddingsYFMProps } from './paddings';
|
4
|
+
import { ClassNameProps, PostData, BlockType } from './common';
|
5
|
+
export type AuthorProps = ClassNameProps & {
|
6
|
+
authorId: number;
|
7
|
+
image: string;
|
8
|
+
} & PaddingsYFMProps;
|
9
|
+
export type BannerProps = ContentBlockProps & {
|
10
|
+
background?: string;
|
11
|
+
color?: string;
|
12
|
+
image?: string;
|
13
|
+
imageSize?: 's' | 'm';
|
14
|
+
} & PaddingsYFMProps;
|
15
|
+
export type ColoredTextProps = ContentBlockProps & {
|
16
|
+
background?: {
|
17
|
+
color?: string;
|
18
|
+
image?: string;
|
19
|
+
altText?: string;
|
20
|
+
};
|
21
|
+
} & PaddingsYFMProps;
|
22
|
+
export type CTAProps = {
|
23
|
+
items: Array<ContentBlockProps>;
|
24
|
+
columnCount?: number;
|
25
|
+
} & PaddingsYFMProps;
|
26
|
+
export type HeaderProps = HeaderBlockProps & PaddingsYFMProps;
|
27
|
+
export type LayoutProps = {
|
28
|
+
fullWidth?: boolean;
|
29
|
+
mobileOrder?: string;
|
30
|
+
children: ReactElement[];
|
31
|
+
} & PaddingsYFMProps;
|
32
|
+
export type MediaProps = ClassNameProps & PaddingsYFMProps & Partial<Pick<PCMediaProps, 'youtube' | 'previewImg' | 'image' | 'video' | 'dataLens'>> & {
|
33
|
+
text?: string;
|
34
|
+
};
|
35
|
+
export type MetaProps = {
|
36
|
+
locale: string;
|
37
|
+
theme?: TextTheme;
|
38
|
+
} & PaddingsYFMProps;
|
39
|
+
export type SuggestProps = ClassNameProps & {
|
40
|
+
posts: PostData[];
|
41
|
+
} & PaddingsYFMProps;
|
42
|
+
export type YFMProps = {
|
43
|
+
text: string;
|
44
|
+
} & PaddingsYFMProps;
|
45
|
+
export type FeedProps = {
|
46
|
+
image: string;
|
47
|
+
};
|
48
|
+
export type AuthorBlockModel = {
|
49
|
+
type: BlockType.Author;
|
50
|
+
} & AuthorProps;
|
51
|
+
export type BannerBlockModel = {
|
52
|
+
type: BlockType.Banner;
|
53
|
+
} & BannerProps;
|
54
|
+
export type ColoredTextBlockModel = {
|
55
|
+
type: BlockType.ColoredText;
|
56
|
+
} & ColoredTextProps;
|
57
|
+
export type CTABlockModel = {
|
58
|
+
type: BlockType.CTA;
|
59
|
+
} & CTAProps;
|
60
|
+
export type HeaderBlockModel = {
|
61
|
+
type: BlockType.Header;
|
62
|
+
} & HeaderProps;
|
63
|
+
export type LayoutBlockModel = {
|
64
|
+
type: BlockType.Layout;
|
65
|
+
} & LayoutProps;
|
66
|
+
export type MediaBlockModel = {
|
67
|
+
type: BlockType.Media;
|
68
|
+
} & MediaProps;
|
69
|
+
export type MetaBlockModel = {
|
70
|
+
type: BlockType.Meta;
|
71
|
+
} & MetaProps;
|
72
|
+
export type SuggestBlockModel = {
|
73
|
+
type: BlockType.Suggest;
|
74
|
+
} & SuggestProps;
|
75
|
+
export type YFMBlockModel = {
|
76
|
+
type: BlockType.YFM;
|
77
|
+
} & YFMProps;
|
78
|
+
export type FeedBlockModel = {
|
79
|
+
type: BlockType.Feed;
|
80
|
+
} & FeedProps;
|
81
|
+
export type BlockModel = AuthorBlockModel | BannerBlockModel | ColoredTextBlockModel | CTABlockModel | HeaderBlockModel | LayoutBlockModel | MediaBlockModel | MetaBlockModel | SuggestBlockModel | YFMBlockModel | FeedBlockModel;
|
82
|
+
export type Block = BlockModel & {
|
83
|
+
[x: string]: any;
|
84
|
+
};
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,151 @@
|
|
1
|
+
import { IDevice, IBrowser } from 'ua-parser-js';
|
2
|
+
import { ReactNode } from 'react';
|
3
|
+
import { HeaderBlockProps as PageConstructorHeaderBlockProps } from '@gravity-ui/page-constructor';
|
4
|
+
import { Locale } from '../models/locale';
|
5
|
+
export declare enum Theme {
|
6
|
+
Light = "light",
|
7
|
+
Dark = "dark"
|
8
|
+
}
|
9
|
+
export interface ClassNameProps {
|
10
|
+
className?: string;
|
11
|
+
}
|
12
|
+
export type Author = {
|
13
|
+
id: number;
|
14
|
+
avatar: string | null;
|
15
|
+
createdAt: string;
|
16
|
+
updatedAt: string;
|
17
|
+
firstName: string | null;
|
18
|
+
secondName: string | null;
|
19
|
+
description: string | null;
|
20
|
+
fullDescription: string | null;
|
21
|
+
} & {
|
22
|
+
[x: string]: string | null;
|
23
|
+
};
|
24
|
+
export type Service = {
|
25
|
+
id: number;
|
26
|
+
slug: string;
|
27
|
+
name: string;
|
28
|
+
} & {
|
29
|
+
[x: string]: string | null;
|
30
|
+
};
|
31
|
+
export type Query = Record<string, number | string | null>;
|
32
|
+
export interface Menu {
|
33
|
+
title: string;
|
34
|
+
}
|
35
|
+
export interface WithDeviceProps {
|
36
|
+
device: IDevice;
|
37
|
+
browser: IBrowser;
|
38
|
+
isRobot: boolean;
|
39
|
+
}
|
40
|
+
export interface PostsProps {
|
41
|
+
posts: PostData[];
|
42
|
+
count: number;
|
43
|
+
totalCount: number;
|
44
|
+
pinnedPost?: PostData;
|
45
|
+
}
|
46
|
+
export type Tag = {
|
47
|
+
slug: string;
|
48
|
+
name: string;
|
49
|
+
createdAt?: string;
|
50
|
+
updatedAt?: string;
|
51
|
+
icon?: string;
|
52
|
+
isDeleted?: boolean;
|
53
|
+
locale?: string;
|
54
|
+
blogTagId?: number;
|
55
|
+
count?: number;
|
56
|
+
};
|
57
|
+
export interface PostData {
|
58
|
+
author?: string;
|
59
|
+
authors?: Author[];
|
60
|
+
blogPostId?: number;
|
61
|
+
content?: string;
|
62
|
+
date: string;
|
63
|
+
description?: string;
|
64
|
+
hasUserLike: boolean;
|
65
|
+
htmlTitle: string;
|
66
|
+
id: number;
|
67
|
+
image: string;
|
68
|
+
isPublished?: boolean;
|
69
|
+
sharedImage?: string;
|
70
|
+
likes: number;
|
71
|
+
locale: Locale;
|
72
|
+
metaDescription?: string | null;
|
73
|
+
metaTitle?: string | null;
|
74
|
+
readingTime?: number;
|
75
|
+
shareDescription?: string;
|
76
|
+
shareImage?: string;
|
77
|
+
shareTitle?: string;
|
78
|
+
slug: string;
|
79
|
+
keywords?: string[];
|
80
|
+
tags: Tag[];
|
81
|
+
textTitle: string;
|
82
|
+
title: string;
|
83
|
+
url: string;
|
84
|
+
noIndex?: boolean;
|
85
|
+
}
|
86
|
+
export declare enum BlockType {
|
87
|
+
Header = "blog-header-block",
|
88
|
+
YFM = "blog-yfm-block",
|
89
|
+
Layout = "blog-layout-block",
|
90
|
+
Media = "blog-media-block",
|
91
|
+
Banner = "blog-banner-block",
|
92
|
+
CTA = "blog-cta-block",
|
93
|
+
ColoredText = "blog-colored-text-block",
|
94
|
+
Author = "blog-author-block",
|
95
|
+
Suggest = "blog-suggest-block",
|
96
|
+
Meta = "blog-meta-block",
|
97
|
+
Feed = "blog-feed-block"
|
98
|
+
}
|
99
|
+
export type MetaProps = {
|
100
|
+
metaComponent: JSX.Element;
|
101
|
+
needHelmetWrapper: boolean;
|
102
|
+
};
|
103
|
+
export type MetaOrganizationType = {
|
104
|
+
url: string;
|
105
|
+
appTitle: string;
|
106
|
+
legalName: string;
|
107
|
+
supportEmail: string;
|
108
|
+
};
|
109
|
+
export interface PostMetaProps {
|
110
|
+
title: string;
|
111
|
+
date: string;
|
112
|
+
image: string;
|
113
|
+
canonicalUrl: string;
|
114
|
+
content?: string;
|
115
|
+
description?: string;
|
116
|
+
sharing: {
|
117
|
+
shareTitle: string;
|
118
|
+
shareDescription: string;
|
119
|
+
shareImage: string;
|
120
|
+
shareGenImage: string;
|
121
|
+
shareGenTitle: string;
|
122
|
+
};
|
123
|
+
keywords?: string[];
|
124
|
+
noIndex?: boolean;
|
125
|
+
authors?: Author[];
|
126
|
+
tags?: Tag[];
|
127
|
+
organization: MetaOrganizationType;
|
128
|
+
}
|
129
|
+
export type ToggleLikeCallbackType = ({ postId, hasLike, }: {
|
130
|
+
postId?: number;
|
131
|
+
hasLike?: boolean;
|
132
|
+
}) => void;
|
133
|
+
export interface HeaderBlockProps extends PageConstructorHeaderBlockProps {
|
134
|
+
backLink?: {
|
135
|
+
url: string;
|
136
|
+
title: ReactNode;
|
137
|
+
};
|
138
|
+
}
|
139
|
+
export type GetPostsRequest = {
|
140
|
+
tags: string | undefined;
|
141
|
+
page: number;
|
142
|
+
perPage: number;
|
143
|
+
savedOnly: boolean;
|
144
|
+
search: string | undefined;
|
145
|
+
services: string | undefined;
|
146
|
+
};
|
147
|
+
export type GetPostsType = (query: GetPostsRequest) => Promise<PostsProps>;
|
148
|
+
export type HandleChangeQueryParams = (params: Query) => void;
|
149
|
+
export type SetQueryType = (params: Query, options?: {
|
150
|
+
[y: string]: boolean;
|
151
|
+
}) => Promise<void> | void;
|
@@ -0,0 +1,19 @@
|
|
1
|
+
export var Theme;
|
2
|
+
(function (Theme) {
|
3
|
+
Theme["Light"] = "light";
|
4
|
+
Theme["Dark"] = "dark";
|
5
|
+
})(Theme || (Theme = {}));
|
6
|
+
export var BlockType;
|
7
|
+
(function (BlockType) {
|
8
|
+
BlockType["Header"] = "blog-header-block";
|
9
|
+
BlockType["YFM"] = "blog-yfm-block";
|
10
|
+
BlockType["Layout"] = "blog-layout-block";
|
11
|
+
BlockType["Media"] = "blog-media-block";
|
12
|
+
BlockType["Banner"] = "blog-banner-block";
|
13
|
+
BlockType["CTA"] = "blog-cta-block";
|
14
|
+
BlockType["ColoredText"] = "blog-colored-text-block";
|
15
|
+
BlockType["Author"] = "blog-author-block";
|
16
|
+
BlockType["Suggest"] = "blog-suggest-block";
|
17
|
+
BlockType["Meta"] = "blog-meta-block";
|
18
|
+
BlockType["Feed"] = "blog-feed-block";
|
19
|
+
})(BlockType || (BlockType = {}));
|
@@ -0,0 +1,29 @@
|
|
1
|
+
export declare enum Lang {
|
2
|
+
Ru = "ru",
|
3
|
+
En = "en"
|
4
|
+
}
|
5
|
+
export declare enum Currency {
|
6
|
+
RUB = "RUB",
|
7
|
+
USD = "USD",
|
8
|
+
KZT = "KZT"
|
9
|
+
}
|
10
|
+
export interface LangData {
|
11
|
+
lang: Lang;
|
12
|
+
langName: string;
|
13
|
+
regions: Record<string, RegionData>;
|
14
|
+
pathPrefix: string;
|
15
|
+
}
|
16
|
+
export interface RegionData {
|
17
|
+
regionName: string;
|
18
|
+
tld: string;
|
19
|
+
currency: string;
|
20
|
+
order: number;
|
21
|
+
default: boolean;
|
22
|
+
local: boolean;
|
23
|
+
}
|
24
|
+
export interface LocaleData extends Pick<LangData, 'lang'>, Omit<RegionData, 'regionName'> {
|
25
|
+
code: string;
|
26
|
+
region: string;
|
27
|
+
}
|
28
|
+
export interface Locale extends Partial<Pick<LangData, 'langName'>>, Pick<LangData, 'lang'>, Partial<Pick<LangData, 'pathPrefix'>>, Partial<Pick<LocaleData, 'code'>> {
|
29
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
export var Lang;
|
2
|
+
(function (Lang) {
|
3
|
+
Lang["Ru"] = "ru";
|
4
|
+
Lang["En"] = "en";
|
5
|
+
})(Lang || (Lang = {}));
|
6
|
+
export var Currency;
|
7
|
+
(function (Currency) {
|
8
|
+
Currency["RUB"] = "RUB";
|
9
|
+
Currency["USD"] = "USD";
|
10
|
+
Currency["KZT"] = "KZT";
|
11
|
+
})(Currency || (Currency = {}));
|
@@ -0,0 +1,16 @@
|
|
1
|
+
export declare enum PaddingsDirections {
|
2
|
+
top = "top",
|
3
|
+
bottom = "bottom",
|
4
|
+
left = "left",
|
5
|
+
right = "right"
|
6
|
+
}
|
7
|
+
export type PaddingSize = 'xs' | 's' | 'm' | 'l' | 'xl';
|
8
|
+
export type Paddings = {
|
9
|
+
[key in PaddingsDirections]?: PaddingSize;
|
10
|
+
};
|
11
|
+
export type PaddingsYFMProps = {
|
12
|
+
paddingTop?: PaddingSize;
|
13
|
+
paddingBottom?: PaddingSize;
|
14
|
+
paddingRight?: PaddingSize;
|
15
|
+
paddingLeft?: PaddingSize;
|
16
|
+
};
|
@@ -0,0 +1,7 @@
|
|
1
|
+
export var PaddingsDirections;
|
2
|
+
(function (PaddingsDirections) {
|
3
|
+
PaddingsDirections["top"] = "top";
|
4
|
+
PaddingsDirections["bottom"] = "bottom";
|
5
|
+
PaddingsDirections["left"] = "left";
|
6
|
+
PaddingsDirections["right"] = "right";
|
7
|
+
})(PaddingsDirections || (PaddingsDirections = {}));
|
@@ -0,0 +1,42 @@
|
|
1
|
+
/// <reference types="lodash" />
|
2
|
+
import { ContentBlockProps, HeaderBreadCrumbsProps, MetrikaGoal, NewMetrikaGoal } from '@gravity-ui/page-constructor';
|
3
|
+
import { RouterContextProps } from '../contexts/RouterContext';
|
4
|
+
import { Tag, GetPostsRequest, Query } from '../models/common';
|
5
|
+
export interface QueryParam {
|
6
|
+
name: string;
|
7
|
+
value?: string | number | null;
|
8
|
+
}
|
9
|
+
export interface RouterActionOptions {
|
10
|
+
shallow?: boolean;
|
11
|
+
}
|
12
|
+
export declare function getAbsolutePath(router: RouterContextProps, url?: string): string;
|
13
|
+
export declare const getPageSearchParams: (query?: Query) => URLSearchParams;
|
14
|
+
export declare const scrollToHash: (hash: string, browser?: string) => void;
|
15
|
+
type CloudListTagStub = {};
|
16
|
+
export declare const getTags: ((tags: Tag[], prefix?: string) => CloudListTagStub[]) & import("lodash").MemoizedFunction;
|
17
|
+
export declare const postLikeStatus: import("lodash").DebouncedFunc<(postId: number, hasUserLike: boolean) => void>;
|
18
|
+
export declare const getTagFilterUrl: (tagId: string | number, prefix: string) => string;
|
19
|
+
export declare const updateContentSizes: ({ size, colSizes, theme, ...contentData }: ContentBlockProps) => {
|
20
|
+
size: import("@gravity-ui/page-constructor").ContentSize;
|
21
|
+
colSizes: {
|
22
|
+
all: number;
|
23
|
+
md: number;
|
24
|
+
} | Partial<Record<import("@gravity-ui/page-constructor").GridColumnSize, number>>;
|
25
|
+
theme: import("@gravity-ui/page-constructor").ContentTheme;
|
26
|
+
title?: string | import("@gravity-ui/page-constructor").TitleBaseProps | undefined;
|
27
|
+
text?: string | undefined;
|
28
|
+
additionalInfo?: string | undefined;
|
29
|
+
links?: import("@gravity-ui/page-constructor").LinkProps[] | undefined;
|
30
|
+
buttons?: import("@gravity-ui/page-constructor").ButtonProps[] | undefined;
|
31
|
+
centered?: boolean | undefined;
|
32
|
+
};
|
33
|
+
type GetBreadcrumbsProps = {
|
34
|
+
tags?: Tag[];
|
35
|
+
pathPrefix?: string;
|
36
|
+
};
|
37
|
+
export declare const getBreadcrumbs: ({ tags, pathPrefix }: GetBreadcrumbsProps) => HeaderBreadCrumbsProps;
|
38
|
+
export declare const isMetrikaExist: (goal: NewMetrikaGoal, existGoals: NewMetrikaGoal[]) => boolean;
|
39
|
+
export declare const getBlogElementMetrika: (blogCustomGoal: NewMetrikaGoal, existingGoals?: MetrikaGoal) => string | string[] | NewMetrikaGoal[];
|
40
|
+
export declare const getFeedQueryParams: (queryString: Query, pageNumber?: number) => GetPostsRequest;
|
41
|
+
export declare const scrollOnPageChange: (containerId: string) => void;
|
42
|
+
export {};
|
@@ -0,0 +1,107 @@
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
2
|
+
var t = {};
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
4
|
+
t[p] = s[p];
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
8
|
+
t[p[i]] = s[p[i]];
|
9
|
+
}
|
10
|
+
return t;
|
11
|
+
};
|
12
|
+
import { format, parse } from 'url';
|
13
|
+
import { memoize, debounce } from 'lodash';
|
14
|
+
import { isNewMetrikaFormat, } from '@gravity-ui/page-constructor';
|
15
|
+
import { i18, Keyset } from '../i18n';
|
16
|
+
import { CONTENT_DEFAULT_COL_SIZES, CONTENT_DEFAULT_SIZE, CONTENT_DEFAULT_THEME, DEFAULT_ROWS_PER_PAGE, DEFAULT_PAGE, } from '../blocks/constants';
|
17
|
+
export function getAbsolutePath(router, url) {
|
18
|
+
if (!router || !router.pathname) {
|
19
|
+
return url !== null && url !== void 0 ? url : '';
|
20
|
+
}
|
21
|
+
const parsed = parse(url || router.as || '');
|
22
|
+
return format(Object.assign(Object.assign({}, parsed), { protocol: parsed.protocol || 'https', hostname: parsed.hostname || router.hostname, pathname: parsed.pathname || router.pathname }));
|
23
|
+
}
|
24
|
+
export const getPageSearchParams = (query = {}) => {
|
25
|
+
const searchParams = new URLSearchParams();
|
26
|
+
Object.entries(query).forEach(([key, value]) => {
|
27
|
+
searchParams.set(key, String(value));
|
28
|
+
});
|
29
|
+
return searchParams;
|
30
|
+
};
|
31
|
+
export const scrollToHash = (hash, browser) => {
|
32
|
+
if (!hash) {
|
33
|
+
return;
|
34
|
+
}
|
35
|
+
const element = document.getElementById(hash);
|
36
|
+
if (!element) {
|
37
|
+
return;
|
38
|
+
}
|
39
|
+
setTimeout(() => element.scrollIntoView({ behavior: browser === 'Yandex' ? 'auto' : 'smooth' }), 0);
|
40
|
+
};
|
41
|
+
export const getTags = memoize((tags, prefix) => {
|
42
|
+
return tags.map((_a) => {
|
43
|
+
var { slug } = _a, tag = __rest(_a, ["slug"]);
|
44
|
+
const queryParams = new URLSearchParams();
|
45
|
+
queryParams.set('tags', slug);
|
46
|
+
return Object.assign(Object.assign({}, tag), { id: slug, url: `${prefix}blog?${queryParams}` });
|
47
|
+
});
|
48
|
+
});
|
49
|
+
const stub = (postId) => postId;
|
50
|
+
export const postLikeStatus = debounce((postId, hasUserLike) => {
|
51
|
+
(hasUserLike ? stub : stub)(postId);
|
52
|
+
}, 300);
|
53
|
+
export const getTagFilterUrl = (tagId, prefix) => {
|
54
|
+
return `${prefix}blog?tags=` + tagId;
|
55
|
+
};
|
56
|
+
export const updateContentSizes = (_a) => {
|
57
|
+
var { size, colSizes, theme } = _a, contentData = __rest(_a, ["size", "colSizes", "theme"]);
|
58
|
+
return (Object.assign(Object.assign({}, contentData), { size: size || CONTENT_DEFAULT_SIZE, colSizes: colSizes || CONTENT_DEFAULT_COL_SIZES, theme: theme || CONTENT_DEFAULT_THEME }));
|
59
|
+
};
|
60
|
+
export const getBreadcrumbs = ({ tags, pathPrefix }) => {
|
61
|
+
const prefix = pathPrefix ? `/${pathPrefix}/` : '/';
|
62
|
+
const breadcrumbs = {
|
63
|
+
items: [{ text: i18(Keyset.TitleBreadcrumbs), url: `${prefix}blog` }],
|
64
|
+
theme: 'light',
|
65
|
+
};
|
66
|
+
if (tags === null || tags === void 0 ? void 0 : tags.length) {
|
67
|
+
const localizedTags = getTags(tags, prefix);
|
68
|
+
const tag = localizedTags[0];
|
69
|
+
// @ts-ignore todo fix
|
70
|
+
breadcrumbs.items.push({ text: tag.name, url: getTagFilterUrl(tag.id, prefix) });
|
71
|
+
}
|
72
|
+
return breadcrumbs;
|
73
|
+
};
|
74
|
+
export const isMetrikaExist = (goal, existGoals) => {
|
75
|
+
return Boolean(existGoals.find((existGoal) => goal.name === existGoal.name));
|
76
|
+
};
|
77
|
+
export const getBlogElementMetrika = (blogCustomGoal, existingGoals) => {
|
78
|
+
if (existingGoals) {
|
79
|
+
if (isNewMetrikaFormat(existingGoals) && !isMetrikaExist(blogCustomGoal, existingGoals)) {
|
80
|
+
const goals = [...existingGoals];
|
81
|
+
goals.push(blogCustomGoal);
|
82
|
+
return goals;
|
83
|
+
}
|
84
|
+
return existingGoals;
|
85
|
+
}
|
86
|
+
else {
|
87
|
+
return [blogCustomGoal];
|
88
|
+
}
|
89
|
+
};
|
90
|
+
export const getFeedQueryParams = (queryString, pageNumber) => {
|
91
|
+
const queryParams = getPageSearchParams(queryString);
|
92
|
+
const tags = queryParams.get('tags') || undefined;
|
93
|
+
const page = pageNumber || Number(queryParams.get('page') || DEFAULT_PAGE);
|
94
|
+
const perPage = Number(queryParams.get('perPage') || DEFAULT_ROWS_PER_PAGE);
|
95
|
+
const savedOnly = queryParams.get('savedOnly') === 'true';
|
96
|
+
const search = queryParams.get('search') || undefined;
|
97
|
+
const serviceIds = queryParams.get('services') || undefined;
|
98
|
+
return { tags, page, perPage, savedOnly, search, services: serviceIds };
|
99
|
+
};
|
100
|
+
export const scrollOnPageChange = (containerId) => {
|
101
|
+
var _a;
|
102
|
+
const cardsContainerEl = document.getElementById(containerId);
|
103
|
+
const y = ((_a = cardsContainerEl === null || cardsContainerEl === void 0 ? void 0 : cardsContainerEl.getBoundingClientRect()) === null || _a === void 0 ? void 0 : _a.y) || 0;
|
104
|
+
if (y < 0) {
|
105
|
+
scrollToHash(containerId);
|
106
|
+
}
|
107
|
+
};
|
@@ -0,0 +1,13 @@
|
|
1
|
+
interface DateTimeFormatter {
|
2
|
+
longDate: Intl.DateTimeFormat;
|
3
|
+
shortDate: Intl.DateTimeFormat;
|
4
|
+
longMonthDay: Intl.DateTimeFormat;
|
5
|
+
shortMonthDay: Intl.DateTimeFormat;
|
6
|
+
longDateTime: Intl.DateTimeFormat;
|
7
|
+
shortDateTime: Intl.DateTimeFormat;
|
8
|
+
shortTime: Intl.DateTimeFormat;
|
9
|
+
nanoTime: Intl.DateTimeFormat;
|
10
|
+
year: Intl.DateTimeFormat;
|
11
|
+
}
|
12
|
+
export declare const format: (date: string | number, formatCode: keyof DateTimeFormatter, localeCode?: string) => string;
|
13
|
+
export {};
|
@@ -0,0 +1,55 @@
|
|
1
|
+
const defaultRegion = 'ru-RU';
|
2
|
+
const dateTimeFormatters = new Map();
|
3
|
+
function getDateTimeFormatter(localeCode) {
|
4
|
+
if (!dateTimeFormatters.has(localeCode)) {
|
5
|
+
const formatters = {
|
6
|
+
// December 20, 2012
|
7
|
+
longDate: new Intl.DateTimeFormat(localeCode, {
|
8
|
+
year: 'numeric',
|
9
|
+
month: 'long',
|
10
|
+
day: 'numeric',
|
11
|
+
}),
|
12
|
+
// 4/30/2021
|
13
|
+
shortDate: new Intl.DateTimeFormat(localeCode, {
|
14
|
+
year: 'numeric',
|
15
|
+
month: 'numeric',
|
16
|
+
day: 'numeric',
|
17
|
+
}),
|
18
|
+
// December 20
|
19
|
+
longMonthDay: new Intl.DateTimeFormat(localeCode, { month: 'long', day: 'numeric' }),
|
20
|
+
// 12/20
|
21
|
+
shortMonthDay: new Intl.DateTimeFormat(localeCode, { month: 'numeric', day: 'numeric' }),
|
22
|
+
// April 27, 2021, 3:03 PM
|
23
|
+
longDateTime: new Intl.DateTimeFormat(localeCode, {
|
24
|
+
year: 'numeric',
|
25
|
+
month: 'long',
|
26
|
+
day: 'numeric',
|
27
|
+
hour: 'numeric',
|
28
|
+
minute: 'numeric',
|
29
|
+
}),
|
30
|
+
// 4/30/2021, 2:30 PM
|
31
|
+
shortDateTime: new Intl.DateTimeFormat(localeCode, {
|
32
|
+
year: 'numeric',
|
33
|
+
month: 'numeric',
|
34
|
+
day: 'numeric',
|
35
|
+
hour: 'numeric',
|
36
|
+
minute: 'numeric',
|
37
|
+
}),
|
38
|
+
// 12:30
|
39
|
+
shortTime: new Intl.DateTimeFormat(localeCode, { hour: 'numeric', minute: 'numeric' }),
|
40
|
+
// 30:58
|
41
|
+
nanoTime: new Intl.DateTimeFormat(localeCode, {
|
42
|
+
minute: 'numeric',
|
43
|
+
second: 'numeric',
|
44
|
+
}),
|
45
|
+
// 2023
|
46
|
+
year: new Intl.DateTimeFormat(localeCode, {
|
47
|
+
year: 'numeric',
|
48
|
+
}),
|
49
|
+
};
|
50
|
+
dateTimeFormatters.set(localeCode, formatters);
|
51
|
+
}
|
52
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- formatter will be always inserted above
|
53
|
+
return dateTimeFormatters.get(localeCode);
|
54
|
+
}
|
55
|
+
export const format = (date, formatCode, localeCode = defaultRegion) => getDateTimeFormatter(localeCode)[formatCode].format(new Date(date));
|