@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
package/package.json
ADDED
@@ -0,0 +1,140 @@
|
|
1
|
+
{
|
2
|
+
"name": "@gravity-ui/blog-constructor",
|
3
|
+
"version": "1.0.0-alpha.1",
|
4
|
+
"description": "Gravity UI Blog Constructor",
|
5
|
+
"license": "MIT",
|
6
|
+
"repository": {
|
7
|
+
"type": "git",
|
8
|
+
"url": "https://github.com/gravity-ui/blog-constructor"
|
9
|
+
},
|
10
|
+
"files": [
|
11
|
+
"build",
|
12
|
+
"styles",
|
13
|
+
"server"
|
14
|
+
],
|
15
|
+
"sideEffects": [
|
16
|
+
"*.css",
|
17
|
+
"*.scss"
|
18
|
+
],
|
19
|
+
"main": "build/cjs/index.js",
|
20
|
+
"module": "build/esm/index.js",
|
21
|
+
"typings": "build/esm/index.d.ts",
|
22
|
+
"scripts": {
|
23
|
+
"deps:install": "npm ci",
|
24
|
+
"deps:truncate": "npm prune --production",
|
25
|
+
"lint:fix": "run-s lint:js:fix lint:styles:fix lint:prettier:fix typecheck",
|
26
|
+
"lint:js": "eslint '**/*.{js,jsx,ts,tsx}' --max-warnings=0",
|
27
|
+
"lint:js:fix": "eslint '**/*.{js,jsx,ts,tsx}' --max-warnings=0 --quiet --fix",
|
28
|
+
"lint:styles": "stylelint '{styles,src}/**/*.scss'",
|
29
|
+
"lint:styles:fix": "stylelint **/*.scss -s scss --fix",
|
30
|
+
"lint:prettier": "prettier --check '**/*.{js,jsx,ts,tsx,css,scss,json,yaml,yml,md}'",
|
31
|
+
"lint:prettier:fix": "prettier --write '**/*.{js,jsx,ts,tsx,css,scss,json,yaml,yml,md}'",
|
32
|
+
"lint": "run-p lint:js lint:styles lint:prettier typecheck",
|
33
|
+
"typecheck": "tsc --noEmit",
|
34
|
+
"dev": "npm run storybook:start",
|
35
|
+
"start": "node dist",
|
36
|
+
"clean": "gulp clean",
|
37
|
+
"build": "npm run clean && gulp",
|
38
|
+
"storybook:start": "TS_NODE_PROJECT=.storybook/tsconfig.json start-storybook -p 7010",
|
39
|
+
"storybook:build": "TS_NODE_PROJECT=.storybook/tsconfig.json build-storybook -c .storybook -o storybook-static .storybook/public",
|
40
|
+
"prepublishOnly": "npm run lint && npm run build",
|
41
|
+
"prepare": "husky install",
|
42
|
+
"svgo": "svgo --config svgo.config.js",
|
43
|
+
"svgo:all": "svgo --config svgo.config.js -r -f assets"
|
44
|
+
},
|
45
|
+
"dependencies": {
|
46
|
+
"@gravity-ui/i18n": "^1.0.0",
|
47
|
+
"@gravity-ui/uikit": "^3.20.0",
|
48
|
+
"@types/fast-html-parser": "^1.0.2",
|
49
|
+
"@types/recompose": "^0.30.10",
|
50
|
+
"bem-cn-lite": "^4.0.0",
|
51
|
+
"fast-html-parser": "^1.0.1",
|
52
|
+
"gulp": "^4.0.2",
|
53
|
+
"gulp-dart-sass": "^1.0.2",
|
54
|
+
"gulp-rename": "^2.0.0",
|
55
|
+
"gulp-replace": "^1.1.3",
|
56
|
+
"gulp-typescript": "^6.0.0-alpha.1",
|
57
|
+
"html-loader": "^1.3.2",
|
58
|
+
"isomorphic-dompurify": "^0.20.0",
|
59
|
+
"lodash": "^4.17.21",
|
60
|
+
"markdown-loader": "^6.0.0",
|
61
|
+
"react-helmet": "^6.1.0",
|
62
|
+
"react-player": "^2.9.0",
|
63
|
+
"react-slick": "^0.28.1",
|
64
|
+
"react-spring": "^9.3.0",
|
65
|
+
"react-transition-group": "^4.4.2",
|
66
|
+
"react-waypoint": "^10.1.0",
|
67
|
+
"recompose": "^0.30.0",
|
68
|
+
"rimraf": "^3.0.2",
|
69
|
+
"sanitize-html": "^2.6.1",
|
70
|
+
"sass": "^1.54.4",
|
71
|
+
"snakecase-keys": "^5.1.0",
|
72
|
+
"typograf": "^6.14.0",
|
73
|
+
"ua-parser-js": "^0.7.28",
|
74
|
+
"url": "^0.11.0",
|
75
|
+
"url-join": "^5.0.0",
|
76
|
+
"webpack": "^4.46.0"
|
77
|
+
},
|
78
|
+
"peerDependencies": {
|
79
|
+
"@doc-tools/components": "^2.0.0",
|
80
|
+
"@doc-tools/transform": "^2.6.1",
|
81
|
+
"@gravity-ui/page-constructor": "^1.1.0",
|
82
|
+
"react": "^16.0.0 || ^17.0.0"
|
83
|
+
},
|
84
|
+
"devDependencies": {
|
85
|
+
"@babel/core": "^7.15.8",
|
86
|
+
"@doc-tools/components": "^2.1.0",
|
87
|
+
"@doc-tools/transform": "^2.9.0",
|
88
|
+
"@gravity-ui/eslint-config": "^1.0.2",
|
89
|
+
"@gravity-ui/page-constructor": "^1.4.1",
|
90
|
+
"@gravity-ui/prettier-config": "^1.0.1",
|
91
|
+
"@gravity-ui/stylelint-config": "^1.0.0",
|
92
|
+
"@gravity-ui/tsconfig": "^1.0.0",
|
93
|
+
"@storybook/addon-actions": "^6.3.12",
|
94
|
+
"@storybook/addon-essentials": "^6.5.10",
|
95
|
+
"@storybook/addon-knobs": "^6.3.1",
|
96
|
+
"@storybook/addon-viewport": "^6.3.12",
|
97
|
+
"@storybook/preset-scss": "^1.0.3",
|
98
|
+
"@storybook/react": "^6.5.10",
|
99
|
+
"@types/js-yaml": "^4.0.5",
|
100
|
+
"@types/lodash": "^4.14.176",
|
101
|
+
"@types/react": "^18.0.26",
|
102
|
+
"@types/react-helmet": "^6.1.5",
|
103
|
+
"@types/react-slick": "^0.23.7",
|
104
|
+
"@types/react-transition-group": "^4.4.4",
|
105
|
+
"@types/sanitize-html": "^2.6.0",
|
106
|
+
"@types/ua-parser-js": "^0.7.36",
|
107
|
+
"eslint": "^7.32.0",
|
108
|
+
"eslint-plugin-local": "./eslint-plugin-local",
|
109
|
+
"husky": "^7.0.4",
|
110
|
+
"js-yaml": "^3.14.1",
|
111
|
+
"lint-staged": "^11.2.6",
|
112
|
+
"move-file-cli": "^3.0.0",
|
113
|
+
"npm-run-all": "^4.1.5",
|
114
|
+
"postcss": "^8.4.14",
|
115
|
+
"prettier": "2.4.1",
|
116
|
+
"react": "^18.2.0",
|
117
|
+
"react-dom": "^18.2.0",
|
118
|
+
"sass-loader": "^10.3.1",
|
119
|
+
"stylelint": "^14.11.0",
|
120
|
+
"stylelint-scss": "^3.21.0",
|
121
|
+
"svg-sprite-loader": "^6.0.11",
|
122
|
+
"typescript": "^4.9.3"
|
123
|
+
},
|
124
|
+
"lint-staged": {
|
125
|
+
"*.{css,scss}": [
|
126
|
+
"stylelint --fix",
|
127
|
+
"prettier --write"
|
128
|
+
],
|
129
|
+
"*.{js,jsx,ts,tsx}": [
|
130
|
+
"eslint --fix --quiet",
|
131
|
+
"prettier --write"
|
132
|
+
],
|
133
|
+
"*.{json,yaml,yml,md}": [
|
134
|
+
"prettier --write"
|
135
|
+
]
|
136
|
+
},
|
137
|
+
"publishConfig": {
|
138
|
+
"tag": "alpha"
|
139
|
+
}
|
140
|
+
}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
import { BlockType as PCBlockType } from '@gravity-ui/page-constructor';
|
2
|
+
import { BlockType } from '../models/common';
|
3
|
+
type GetConfigForCreateReadableContent = () => {
|
4
|
+
[x in BlockType | PCBlockType]: {
|
5
|
+
fields: string[];
|
6
|
+
};
|
7
|
+
};
|
8
|
+
/**
|
9
|
+
* Func for create extended typography config for page-constructor
|
10
|
+
*
|
11
|
+
* @returns - {
|
12
|
+
* [blockTypes.YFM]: [
|
13
|
+
* {
|
14
|
+
* fields: ['text'],
|
15
|
+
* transformer: yfmTransformer,
|
16
|
+
* },
|
17
|
+
* ],
|
18
|
+
* }
|
19
|
+
*/
|
20
|
+
export declare const getExtendTypographyConfig: () => {};
|
21
|
+
/**
|
22
|
+
* Func for create readable content func
|
23
|
+
*
|
24
|
+
* @returns - {
|
25
|
+
* [blockTypes.YFM]: {
|
26
|
+
* fields: ['text'],
|
27
|
+
* transformer: yfmTransformer,
|
28
|
+
* },
|
29
|
+
* }
|
30
|
+
*/
|
31
|
+
export declare const getConfigForCreateReadableContent: GetConfigForCreateReadableContent;
|
32
|
+
export {};
|
@@ -0,0 +1,39 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getConfigForCreateReadableContent = exports.getExtendTypographyConfig = void 0;
|
4
|
+
const server_1 = require("@gravity-ui/page-constructor/server");
|
5
|
+
const common_1 = require("../models/common");
|
6
|
+
const BLOCKS_FOR_TYPOGRAPHY_TRANSFORM = [common_1.BlockType.YFM, common_1.BlockType.ColoredText, common_1.BlockType.Media];
|
7
|
+
/**
|
8
|
+
* Func for create extended typography config for page-constructor
|
9
|
+
*
|
10
|
+
* @returns - {
|
11
|
+
* [blockTypes.YFM]: [
|
12
|
+
* {
|
13
|
+
* fields: ['text'],
|
14
|
+
* transformer: yfmTransformer,
|
15
|
+
* },
|
16
|
+
* ],
|
17
|
+
* }
|
18
|
+
*/
|
19
|
+
const getExtendTypographyConfig = () => BLOCKS_FOR_TYPOGRAPHY_TRANSFORM.reduce((result, current) => (Object.assign({ [current]: [
|
20
|
+
{
|
21
|
+
fields: ['text'],
|
22
|
+
transformer: server_1.yfmTransformer,
|
23
|
+
},
|
24
|
+
] }, result)), {});
|
25
|
+
exports.getExtendTypographyConfig = getExtendTypographyConfig;
|
26
|
+
/**
|
27
|
+
* Func for create readable content func
|
28
|
+
*
|
29
|
+
* @returns - {
|
30
|
+
* [blockTypes.YFM]: {
|
31
|
+
* fields: ['text'],
|
32
|
+
* transformer: yfmTransformer,
|
33
|
+
* },
|
34
|
+
* }
|
35
|
+
*/
|
36
|
+
const getConfigForCreateReadableContent = () => BLOCKS_FOR_TYPOGRAPHY_TRANSFORM.reduce((result, current) => (Object.assign({ [current]: {
|
37
|
+
fields: ['text'],
|
38
|
+
} }, result)), {});
|
39
|
+
exports.getConfigForCreateReadableContent = getConfigForCreateReadableContent;
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import { PageContent } from '@gravity-ui/page-constructor';
|
2
|
+
import { Lang } from '../models/locale';
|
3
|
+
type FilteringOptions = {
|
4
|
+
lang: Lang;
|
5
|
+
region?: string;
|
6
|
+
};
|
7
|
+
type FilterItemsProps = {
|
8
|
+
items: Record<string, unknown>[] | unknown;
|
9
|
+
itemsKey: string;
|
10
|
+
options: FilteringOptions;
|
11
|
+
};
|
12
|
+
/**
|
13
|
+
* Filters items by expression and removes empty items.
|
14
|
+
* @param {Array} items
|
15
|
+
* @param {string} itemsKey
|
16
|
+
* @param {Object.<string, Lang>} vars
|
17
|
+
* @return {Array}
|
18
|
+
*/
|
19
|
+
export declare const filterItems: ({ items, itemsKey, options }: FilterItemsProps) => any;
|
20
|
+
/**
|
21
|
+
* Filters content.
|
22
|
+
* @param {PageContent} content
|
23
|
+
* @param {Object.<string, Lang>} options
|
24
|
+
* @return {PageContent}
|
25
|
+
*/
|
26
|
+
export declare const filterContent: (content: PageContent, options: FilteringOptions) => any;
|
27
|
+
export {};
|
@@ -0,0 +1,61 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.filterContent = exports.filterItems = void 0;
|
7
|
+
const evaluation_1 = __importDefault(require("@doc-tools/transform/lib/liquid/evaluation"));
|
8
|
+
/**
|
9
|
+
* Filters items by expression and removes empty items.
|
10
|
+
* @param {Array} items
|
11
|
+
* @param {string} itemsKey
|
12
|
+
* @param {Object.<string, Lang>} vars
|
13
|
+
* @return {Array}
|
14
|
+
*/
|
15
|
+
const filterItems = ({ items, itemsKey, options }) => {
|
16
|
+
if (!Array.isArray(items)) {
|
17
|
+
throw new Error(`Error while filtering: items has invalid key '${itemsKey}' equals ${JSON.stringify(items)}`);
|
18
|
+
}
|
19
|
+
return items.reduce((result, item) => {
|
20
|
+
const { when } = item;
|
21
|
+
const whenResult = when === true ||
|
22
|
+
when === undefined ||
|
23
|
+
(typeof when === 'string' && (0, evaluation_1.default)(when, options));
|
24
|
+
delete item.when;
|
25
|
+
if (whenResult) {
|
26
|
+
const property = item[itemsKey];
|
27
|
+
if (property === undefined) {
|
28
|
+
result.push(item);
|
29
|
+
}
|
30
|
+
else {
|
31
|
+
const filteredProperty = (0, exports.filterItems)({ items: property, itemsKey, options });
|
32
|
+
if (filteredProperty.length !== 0) {
|
33
|
+
result.push(Object.assign(Object.assign({}, item), { [itemsKey]: filteredProperty }));
|
34
|
+
}
|
35
|
+
}
|
36
|
+
}
|
37
|
+
return result;
|
38
|
+
}, []);
|
39
|
+
};
|
40
|
+
exports.filterItems = filterItems;
|
41
|
+
/**
|
42
|
+
* Filters content.
|
43
|
+
* @param {PageContent} content
|
44
|
+
* @param {Object.<string, Lang>} options
|
45
|
+
* @return {PageContent}
|
46
|
+
*/
|
47
|
+
const filterContent = (content, options) => {
|
48
|
+
if (Array.isArray(content)) {
|
49
|
+
return (0, exports.filterItems)({ items: content, itemsKey: '', options }).map((item) => (0, exports.filterContent)(item, options));
|
50
|
+
}
|
51
|
+
else if (content && typeof content === 'object') {
|
52
|
+
return Object.entries(content).reduce((acc, [key, value]) => {
|
53
|
+
acc[key] = (0, exports.filterContent)(value, options);
|
54
|
+
return acc;
|
55
|
+
}, {});
|
56
|
+
}
|
57
|
+
else {
|
58
|
+
return content;
|
59
|
+
}
|
60
|
+
};
|
61
|
+
exports.filterContent = filterContent;
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import { Block } from '../models/blocks';
|
2
|
+
type CreateReadableContentProps = {
|
3
|
+
blocks: Block[];
|
4
|
+
content?: string;
|
5
|
+
authors?: unknown[];
|
6
|
+
};
|
7
|
+
/**
|
8
|
+
* Function for create readable content
|
9
|
+
*
|
10
|
+
* @param blocks - content blocks array
|
11
|
+
* @param content - content data
|
12
|
+
* @param authors - authors array
|
13
|
+
*
|
14
|
+
* @returns readable content
|
15
|
+
*/
|
16
|
+
export declare const createReadableContent: ({ content, blocks, authors, }: CreateReadableContentProps) => string;
|
17
|
+
export {};
|
@@ -0,0 +1,47 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.createReadableContent = void 0;
|
4
|
+
const config_1 = require("./config");
|
5
|
+
const common_1 = require("../models/common");
|
6
|
+
/**
|
7
|
+
* Function for create readable content
|
8
|
+
*
|
9
|
+
* @param blocks - content blocks array
|
10
|
+
* @param content - content data
|
11
|
+
* @param authors - authors array
|
12
|
+
*
|
13
|
+
* @returns readable content
|
14
|
+
*/
|
15
|
+
const createReadableContent = ({ content = '', blocks, authors = [], }) => {
|
16
|
+
try {
|
17
|
+
const config = (0, config_1.getConfigForCreateReadableContent)();
|
18
|
+
const readableContent = blocks.reduce((resultContent, block) => {
|
19
|
+
let innerContent = resultContent;
|
20
|
+
if (config[block.type]) {
|
21
|
+
innerContent += config[block.type].fields
|
22
|
+
.map((field) => block[field])
|
23
|
+
.filter(Boolean)
|
24
|
+
.join('\n');
|
25
|
+
innerContent += '\n';
|
26
|
+
}
|
27
|
+
if (block.type === common_1.BlockType.Author) {
|
28
|
+
authors.push(block.uid);
|
29
|
+
}
|
30
|
+
if (block.children && block.children.length) {
|
31
|
+
innerContent = (0, exports.createReadableContent)({
|
32
|
+
content: innerContent,
|
33
|
+
blocks: block.children,
|
34
|
+
authors,
|
35
|
+
});
|
36
|
+
}
|
37
|
+
return innerContent;
|
38
|
+
}, content);
|
39
|
+
return readableContent;
|
40
|
+
}
|
41
|
+
catch (err) {
|
42
|
+
// eslint-disable-next-line no-console
|
43
|
+
console.error('Page content transformation error', err);
|
44
|
+
return '';
|
45
|
+
}
|
46
|
+
};
|
47
|
+
exports.createReadableContent = createReadableContent;
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import { PostMetaProps } from '../models/common';
|
2
|
+
/**
|
3
|
+
* Function for sanitized meta-data fields
|
4
|
+
*/
|
5
|
+
export declare const sanitizeMeta: (metaData: PostMetaProps) => {
|
6
|
+
title: string;
|
7
|
+
description: string;
|
8
|
+
date: string;
|
9
|
+
image: string;
|
10
|
+
canonicalUrl: string;
|
11
|
+
organization: import("../models/common").MetaOrganizationType;
|
12
|
+
content?: string | undefined;
|
13
|
+
sharing: {
|
14
|
+
shareTitle: string;
|
15
|
+
shareDescription: string;
|
16
|
+
shareImage: string;
|
17
|
+
shareGenImage: string;
|
18
|
+
shareGenTitle: string;
|
19
|
+
};
|
20
|
+
keywords?: string[] | undefined;
|
21
|
+
noIndex?: boolean | undefined;
|
22
|
+
authors?: import("../models/common").Author[] | undefined;
|
23
|
+
tags?: import("../models/common").Tag[] | undefined;
|
24
|
+
};
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.sanitizeMeta = void 0;
|
4
|
+
const server_1 = require("@gravity-ui/page-constructor/server");
|
5
|
+
/**
|
6
|
+
* Function for sanitized meta-data fields
|
7
|
+
*/
|
8
|
+
const sanitizeMeta = (metaData) => {
|
9
|
+
const { title, description, date, image, canonicalUrl, organization } = metaData;
|
10
|
+
// this func for resolve type conflicts in reduce method
|
11
|
+
const stringObjectKeys = (obj) => Object.keys(obj);
|
12
|
+
const sanitizedOrganization = stringObjectKeys(organization).reduce((acc, current) => {
|
13
|
+
acc[current] = (0, server_1.sanitizeHtml)(organization[current]);
|
14
|
+
return acc;
|
15
|
+
}, {});
|
16
|
+
return Object.assign(Object.assign({}, metaData), { title: (0, server_1.sanitizeHtml)(title), description: (0, server_1.sanitizeHtml)(description), date: (0, server_1.sanitizeHtml)(date), image: (0, server_1.sanitizeHtml)(image), canonicalUrl: (0, server_1.sanitizeHtml)(canonicalUrl), organization: sanitizedOrganization });
|
17
|
+
};
|
18
|
+
exports.sanitizeMeta = sanitizeMeta;
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import { Lang } from '../models/locale';
|
2
|
+
type TypographyConfigType = {
|
3
|
+
[x: string]: Record<string, unknown>;
|
4
|
+
};
|
5
|
+
type TransformPageContentPropsType = {
|
6
|
+
content: string;
|
7
|
+
lang: Lang;
|
8
|
+
region?: string;
|
9
|
+
typographyConfig?: TypographyConfigType;
|
10
|
+
};
|
11
|
+
/**
|
12
|
+
* Func for transform blog page content
|
13
|
+
*
|
14
|
+
* @param content - content yaml in string
|
15
|
+
* @param lang - runtime app lang
|
16
|
+
* @param region - runtime app region
|
17
|
+
* @param typographyConfig - page-constructor extend typography config
|
18
|
+
* @returns transformed content
|
19
|
+
*/
|
20
|
+
export declare const transformPageContent: ({ content, lang, region, typographyConfig, }: TransformPageContentPropsType) => any;
|
21
|
+
export {};
|
@@ -0,0 +1,35 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.transformPageContent = void 0;
|
7
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
8
|
+
const server_1 = require("@gravity-ui/page-constructor/server");
|
9
|
+
const config_1 = require("./config");
|
10
|
+
const contentFilter_1 = require("./contentFilter");
|
11
|
+
const transformBlocks = ({ blocks, lang, typographyConfig }) => (0, server_1.transformBlocks)(blocks, lang, Object.assign(Object.assign({}, typographyConfig), (0, config_1.getExtendTypographyConfig)()));
|
12
|
+
/**
|
13
|
+
* Func for transform blog page content
|
14
|
+
*
|
15
|
+
* @param content - content yaml in string
|
16
|
+
* @param lang - runtime app lang
|
17
|
+
* @param region - runtime app region
|
18
|
+
* @param typographyConfig - page-constructor extend typography config
|
19
|
+
* @returns transformed content
|
20
|
+
*/
|
21
|
+
const transformPageContent = ({ content, lang, region, typographyConfig = {}, }) => {
|
22
|
+
try {
|
23
|
+
const transformedContent = (0, contentFilter_1.filterContent)(js_yaml_1.default.load(content), { lang, region });
|
24
|
+
if (transformedContent.blocks) {
|
25
|
+
transformBlocks({ blocks: transformedContent.blocks, lang, typographyConfig });
|
26
|
+
}
|
27
|
+
return transformedContent;
|
28
|
+
}
|
29
|
+
catch (err) {
|
30
|
+
// eslint-disable-next-line no-console
|
31
|
+
console.error('Problem when transforming page content', err);
|
32
|
+
return {};
|
33
|
+
}
|
34
|
+
};
|
35
|
+
exports.transformPageContent = transformPageContent;
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import { Lang } from '../models/locale';
|
2
|
+
import { PostData } from '../models/common';
|
3
|
+
/**
|
4
|
+
* Func for transform post data
|
5
|
+
*
|
6
|
+
* @param postData - post data
|
7
|
+
* @param lang - runtime language
|
8
|
+
*
|
9
|
+
* @returns -prepared post
|
10
|
+
*/
|
11
|
+
export declare const transformPost: (postData: PostData, lang: Lang) => PostData;
|
@@ -0,0 +1,34 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
3
|
+
var t = {};
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
5
|
+
t[p] = s[p];
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
9
|
+
t[p[i]] = s[p[i]];
|
10
|
+
}
|
11
|
+
return t;
|
12
|
+
};
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
14
|
+
exports.transformPost = void 0;
|
15
|
+
const server_1 = require("@gravity-ui/page-constructor/server");
|
16
|
+
/**
|
17
|
+
* Func for transform post data
|
18
|
+
*
|
19
|
+
* @param postData - post data
|
20
|
+
* @param lang - runtime language
|
21
|
+
*
|
22
|
+
* @returns -prepared post
|
23
|
+
*/
|
24
|
+
const transformPost = (postData, lang) => {
|
25
|
+
if (!postData) {
|
26
|
+
// eslint-disable-next-line no-console
|
27
|
+
console.error('Post not found');
|
28
|
+
return {};
|
29
|
+
}
|
30
|
+
const { tags, title, metaTitle, description } = postData, post = __rest(postData, ["tags", "title", "metaTitle", "description"]);
|
31
|
+
return Object.assign(Object.assign({}, post), { title,
|
32
|
+
tags, textTitle: (0, server_1.typografToText)(title, lang), htmlTitle: (0, server_1.typografToHTML)(title, lang), metaTitle: metaTitle || title, description: (0, server_1.yfmTransformer)(lang, description) });
|
33
|
+
};
|
34
|
+
exports.transformPost = transformPost;
|
package/server/index.js
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.transformPost = exports.sanitizeMeta = exports.createReadableContent = exports.transformPageContent = void 0;
|
4
|
+
var transformPageContent_1 = require("./data/transformPageContent");
|
5
|
+
Object.defineProperty(exports, "transformPageContent", { enumerable: true, get: function () { return transformPageContent_1.transformPageContent; } });
|
6
|
+
var createReadableContent_1 = require("./data/createReadableContent");
|
7
|
+
Object.defineProperty(exports, "createReadableContent", { enumerable: true, get: function () { return createReadableContent_1.createReadableContent; } });
|
8
|
+
var sanitizeMeta_1 = require("./data/sanitizeMeta");
|
9
|
+
Object.defineProperty(exports, "sanitizeMeta", { enumerable: true, get: function () { return sanitizeMeta_1.sanitizeMeta; } });
|
10
|
+
var transformPost_1 = require("./data/transformPost");
|
11
|
+
Object.defineProperty(exports, "transformPost", { enumerable: true, get: function () { return transformPost_1.transformPost; } });
|
@@ -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
|
+
};
|