@docusaurus/theme-classic 2.0.0-beta.8bda3b2db → 2.0.0-beta.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/codeTranslations/ar.json +12 -7
- package/codeTranslations/base.json +17 -7
- package/codeTranslations/bn.json +11 -5
- package/codeTranslations/cs.json +62 -0
- package/codeTranslations/da.json +8 -3
- package/codeTranslations/de.json +8 -3
- package/codeTranslations/es.json +15 -10
- package/codeTranslations/fa.json +31 -26
- package/codeTranslations/fil.json +8 -3
- package/codeTranslations/fr.json +8 -3
- package/codeTranslations/he.json +9 -4
- package/codeTranslations/hi.json +9 -4
- package/codeTranslations/ja.json +8 -3
- package/codeTranslations/ko.json +8 -3
- package/codeTranslations/pl.json +8 -3
- package/codeTranslations/pt-BR.json +16 -11
- package/codeTranslations/pt-PT.json +8 -3
- package/codeTranslations/ru.json +10 -5
- package/codeTranslations/sr.json +62 -0
- package/codeTranslations/tr.json +9 -4
- package/codeTranslations/vi.json +10 -5
- package/codeTranslations/zh-Hans.json +9 -4
- package/codeTranslations/zh-Hant.json +9 -4
- package/lib/__tests__/validateThemeConfig.test.js +277 -3
- package/lib/admonitions.css +35 -0
- package/lib/index.js +31 -8
- package/lib/prism-include-languages.js +9 -5
- package/lib/theme/AnnouncementBar/index.js +10 -16
- package/lib/theme/AnnouncementBar/styles.module.css +25 -30
- package/lib/theme/BackToTopButton/index.js +140 -0
- package/lib/theme/BackToTopButton/styles.module.css +42 -0
- package/lib/theme/BlogArchivePage/index.js +89 -0
- package/lib/theme/BlogLayout/index.js +51 -0
- package/lib/theme/BlogListPage/index.js +10 -21
- package/lib/theme/BlogPostAuthor/index.js +51 -0
- package/lib/theme/BlogPostAuthor/styles.module.css +12 -0
- package/lib/theme/BlogPostAuthors/index.js +47 -0
- package/lib/theme/BlogPostAuthors/styles.module.css +11 -0
- package/lib/theme/BlogPostItem/index.js +58 -67
- package/lib/theme/BlogPostPage/index.js +37 -24
- package/lib/theme/BlogSidebar/styles.module.css +2 -2
- package/lib/theme/BlogTagsListPage/index.js +8 -44
- package/lib/theme/BlogTagsPostsPage/index.js +24 -38
- package/lib/theme/CodeBlock/index.js +45 -41
- package/lib/theme/CodeBlock/styles.module.css +6 -9
- package/lib/theme/Details/index.js +30 -0
- package/lib/theme/Details/styles.module.css +13 -0
- package/lib/theme/DocItem/index.js +29 -45
- package/lib/theme/DocItem/styles.module.css +5 -9
- package/lib/theme/DocItemFooter/index.js +79 -0
- package/lib/theme/DocItemFooter/styles.module.css +18 -0
- package/lib/theme/DocPage/index.js +25 -49
- package/lib/theme/DocPage/styles.module.css +8 -23
- package/lib/theme/DocSidebar/index.js +45 -227
- package/lib/theme/DocSidebar/styles.module.css +0 -18
- package/lib/theme/DocSidebarItem/index.js +177 -0
- package/lib/theme/DocSidebarItem/styles.module.css +15 -0
- package/lib/theme/DocTagDocListPage/index.js +89 -0
- package/lib/theme/DocTagsListPage/index.js +44 -0
- package/lib/theme/{DocVersionSuggestions → DocVersionBanner}/index.js +37 -18
- package/lib/theme/EditThisPage/index.js +3 -1
- package/lib/theme/Footer/index.js +13 -4
- package/lib/theme/Heading/index.js +7 -9
- package/lib/theme/Heading/styles.css +4 -6
- package/lib/theme/Heading/styles.module.css +9 -5
- package/lib/theme/IconClose/index.js +31 -0
- package/lib/theme/LastUpdated/index.js +4 -2
- package/lib/theme/LayoutHead/index.js +13 -11
- package/lib/theme/LayoutProviders/index.js +11 -5
- package/lib/theme/Logo/index.js +14 -12
- package/lib/theme/MDXComponents/index.js +45 -4
- package/lib/theme/MDXComponents/styles.css +11 -0
- package/lib/theme/MDXPage/index.js +2 -1
- package/lib/theme/Navbar/index.js +164 -42
- package/lib/theme/Navbar/styles.module.css +10 -3
- package/lib/theme/NavbarItem/DefaultNavbarItem.js +27 -123
- package/lib/theme/NavbarItem/DocNavbarItem.js +6 -5
- package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +19 -12
- package/lib/theme/NavbarItem/DropdownNavbarItem.js +155 -0
- package/lib/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +5 -6
- package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
- package/lib/theme/NavbarItem/index.js +31 -11
- package/lib/theme/Seo/index.js +10 -7
- package/lib/theme/SkipToContent/index.js +9 -3
- package/lib/theme/SkipToContent/styles.module.css +1 -0
- package/lib/theme/TOC/index.js +9 -29
- package/lib/theme/TOC/styles.module.css +1 -1
- package/lib/theme/TOCCollapsible/index.js +53 -0
- package/lib/theme/TOCCollapsible/styles.module.css +50 -0
- package/lib/theme/TOCInline/index.js +7 -27
- package/lib/theme/TOCItems/index.js +78 -0
- package/lib/theme/Tabs/__tests__/index.test.js +123 -0
- package/lib/theme/Tabs/index.js +73 -50
- package/lib/theme/Tabs/styles.module.css +0 -13
- package/lib/theme/Tag/index.js +40 -0
- package/lib/theme/Tag/styles.module.css +70 -0
- package/lib/theme/TagsListByLetter/index.js +48 -0
- package/lib/theme/TagsListByLetter/styles.module.css +11 -0
- package/lib/theme/TagsListInline/index.js +44 -0
- package/lib/theme/TagsListInline/styles.module.css +15 -0
- package/lib/theme/ThemedImage/index.js +4 -5
- package/lib/theme/Toggle/index.js +23 -18
- package/lib/theme/Toggle/styles.module.css +91 -0
- package/lib/theme/UserPreferencesProvider/index.js +1 -9
- package/lib/theme/hooks/useHideableNavbar.js +14 -32
- package/lib/theme/hooks/useTabGroupChoice.js +2 -4
- package/lib/theme/hooks/useTheme.js +2 -2
- package/lib/theme/hooks/useWindowSize.js +33 -20
- package/lib/theme/prism-include-languages.js +4 -3
- package/lib/translations.js +4 -4
- package/lib/types.d.ts +338 -138
- package/lib/validateThemeConfig.js +226 -245
- package/lib-next/__tests__/validateThemeConfig.test.js +277 -3
- package/lib-next/admonitions.css +35 -0
- package/lib-next/index.js +33 -7
- package/lib-next/prism-include-languages.js +0 -2
- package/lib-next/theme/AnnouncementBar/index.js +9 -18
- package/lib-next/theme/AnnouncementBar/styles.module.css +25 -30
- package/lib-next/theme/BackToTopButton/index.js +131 -0
- package/lib-next/theme/BackToTopButton/styles.module.css +42 -0
- package/lib-next/theme/BlogArchivePage/index.js +80 -0
- package/lib-next/theme/BlogLayout/index.js +40 -0
- package/lib-next/theme/BlogListPage/index.js +16 -24
- package/lib-next/theme/BlogPostAuthor/index.js +46 -0
- package/lib-next/theme/BlogPostAuthor/styles.module.css +12 -0
- package/lib-next/theme/BlogPostAuthors/index.js +34 -0
- package/lib-next/theme/BlogPostAuthors/styles.module.css +11 -0
- package/lib-next/theme/BlogPostItem/index.js +79 -86
- package/lib-next/theme/BlogPostPage/index.js +70 -35
- package/lib-next/theme/BlogSidebar/styles.module.css +2 -2
- package/lib-next/theme/BlogTagsListPage/index.js +13 -54
- package/lib-next/theme/BlogTagsPostsPage/index.js +28 -38
- package/lib-next/theme/CodeBlock/index.js +54 -53
- package/lib-next/theme/CodeBlock/styles.module.css +6 -9
- package/lib-next/theme/Details/index.js +20 -0
- package/lib-next/theme/Details/styles.module.css +13 -0
- package/lib-next/theme/DocItem/index.js +46 -55
- package/lib-next/theme/DocItem/styles.module.css +5 -9
- package/lib-next/theme/DocItemFooter/index.js +79 -0
- package/lib-next/theme/DocItemFooter/styles.module.css +18 -0
- package/lib-next/theme/DocPage/index.js +25 -43
- package/lib-next/theme/DocPage/styles.module.css +8 -23
- package/lib-next/theme/DocSidebar/index.js +59 -288
- package/lib-next/theme/DocSidebar/styles.module.css +0 -18
- package/lib-next/theme/DocSidebarItem/index.js +181 -0
- package/lib-next/theme/DocSidebarItem/styles.module.css +15 -0
- package/lib-next/theme/DocTagDocListPage/index.js +89 -0
- package/lib-next/theme/DocTagsListPage/index.js +38 -0
- package/lib-next/theme/{DocVersionSuggestions → DocVersionBanner}/index.js +44 -36
- package/lib-next/theme/EditThisPage/index.js +6 -1
- package/lib-next/theme/Footer/index.js +24 -4
- package/lib-next/theme/Heading/index.js +10 -13
- package/lib-next/theme/Heading/styles.css +4 -6
- package/lib-next/theme/Heading/styles.module.css +9 -5
- package/lib-next/theme/IconClose/index.js +23 -0
- package/lib-next/theme/LastUpdated/index.js +3 -2
- package/lib-next/theme/LayoutHead/index.js +9 -15
- package/lib-next/theme/LayoutProviders/index.js +17 -6
- package/lib-next/theme/Logo/index.js +23 -19
- package/lib-next/theme/MDXComponents/index.js +34 -7
- package/lib-next/theme/MDXComponents/styles.css +11 -0
- package/lib-next/theme/MDXPage/index.js +10 -2
- package/lib-next/theme/Navbar/index.js +192 -56
- package/lib-next/theme/Navbar/styles.module.css +10 -3
- package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +45 -147
- package/lib-next/theme/NavbarItem/DocNavbarItem.js +6 -5
- package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +31 -19
- package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +158 -0
- package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +4 -8
- package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
- package/lib-next/theme/NavbarItem/index.js +25 -12
- package/lib-next/theme/Seo/index.js +11 -7
- package/lib-next/theme/SkipToContent/index.js +5 -6
- package/lib-next/theme/SkipToContent/styles.module.css +1 -0
- package/lib-next/theme/TOC/index.js +12 -36
- package/lib-next/theme/TOC/styles.module.css +1 -1
- package/lib-next/theme/TOCCollapsible/index.js +54 -0
- package/lib-next/theme/TOCCollapsible/styles.module.css +50 -0
- package/lib-next/theme/TOCInline/index.js +10 -28
- package/lib-next/theme/TOCItems/index.js +85 -0
- package/lib-next/theme/Tabs/__tests__/index.test.js +142 -0
- package/lib-next/theme/Tabs/index.js +91 -43
- package/lib-next/theme/Tabs/styles.module.css +0 -13
- package/lib-next/theme/Tag/index.js +27 -0
- package/lib-next/theme/Tag/styles.module.css +70 -0
- package/lib-next/theme/TagsListByLetter/index.js +42 -0
- package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
- package/lib-next/theme/TagsListInline/index.js +31 -0
- package/lib-next/theme/TagsListInline/styles.module.css +15 -0
- package/lib-next/theme/ThemedImage/index.js +5 -6
- package/lib-next/theme/Toggle/index.js +20 -15
- package/lib-next/theme/Toggle/styles.module.css +91 -0
- package/lib-next/theme/UserPreferencesProvider/index.js +0 -4
- package/lib-next/theme/hooks/useHideableNavbar.js +31 -44
- package/lib-next/theme/hooks/useTabGroupChoice.js +2 -4
- package/lib-next/theme/hooks/useTheme.js +2 -2
- package/lib-next/theme/hooks/useWindowSize.js +34 -20
- package/lib-next/theme/prism-include-languages.js +2 -1
- package/lib-next/translations.js +6 -10
- package/lib-next/types.d.ts +338 -138
- package/lib-next/validateThemeConfig.js +134 -110
- package/package.json +24 -19
- package/src/__tests__/validateThemeConfig.test.js +277 -3
- package/src/admonitions.css +35 -0
- package/src/index.ts +44 -14
- package/src/{prism-include-languages.js → prism-include-languages.ts} +0 -0
- package/src/theme/AnnouncementBar/index.tsx +10 -17
- package/src/theme/AnnouncementBar/styles.module.css +25 -30
- package/src/theme/BackToTopButton/index.tsx +142 -0
- package/src/theme/BackToTopButton/styles.module.css +42 -0
- package/src/theme/BlogArchivePage/index.tsx +91 -0
- package/src/theme/BlogLayout/index.tsx +44 -0
- package/src/theme/BlogListPage/index.tsx +17 -24
- package/src/theme/BlogPostAuthor/index.tsx +49 -0
- package/src/theme/BlogPostAuthor/styles.module.css +12 -0
- package/src/theme/BlogPostAuthors/index.tsx +36 -0
- package/src/theme/BlogPostAuthors/styles.module.css +11 -0
- package/src/theme/BlogPostItem/index.tsx +70 -80
- package/src/theme/BlogPostPage/index.tsx +72 -35
- package/src/theme/BlogSidebar/styles.module.css +2 -2
- package/src/theme/BlogTagsListPage/index.tsx +13 -56
- package/src/theme/BlogTagsPostsPage/index.tsx +28 -38
- package/src/theme/CodeBlock/index.tsx +70 -55
- package/src/theme/CodeBlock/styles.module.css +6 -9
- package/src/theme/Details/index.tsx +24 -0
- package/src/theme/Details/styles.module.css +13 -0
- package/src/theme/DocItem/index.tsx +49 -55
- package/src/theme/DocItem/styles.module.css +5 -9
- package/src/theme/DocItemFooter/index.tsx +91 -0
- package/src/theme/DocItemFooter/styles.module.css +18 -0
- package/src/theme/DocPage/index.tsx +24 -38
- package/src/theme/DocPage/styles.module.css +8 -23
- package/src/theme/DocSidebar/index.tsx +70 -300
- package/src/theme/DocSidebar/styles.module.css +0 -18
- package/src/theme/DocSidebarItem/index.tsx +206 -0
- package/src/theme/DocSidebarItem/styles.module.css +15 -0
- package/src/theme/DocTagDocListPage/index.tsx +89 -0
- package/src/theme/DocTagsListPage/index.tsx +41 -0
- package/src/theme/{DocVersionSuggestions → DocVersionBanner}/index.tsx +58 -44
- package/src/theme/EditThisPage/index.tsx +6 -1
- package/src/theme/Footer/index.tsx +26 -4
- package/src/theme/Heading/index.tsx +10 -13
- package/src/theme/Heading/styles.css +4 -6
- package/src/theme/Heading/styles.module.css +9 -5
- package/src/theme/IconClose/index.tsx +26 -0
- package/src/theme/LastUpdated/index.tsx +3 -2
- package/src/theme/LayoutHead/index.tsx +9 -9
- package/src/theme/LayoutProviders/index.tsx +17 -6
- package/src/theme/Logo/index.tsx +19 -15
- package/src/theme/MDXComponents/index.tsx +39 -5
- package/src/theme/MDXComponents/styles.css +11 -0
- package/src/theme/MDXPage/index.tsx +10 -2
- package/src/theme/Navbar/index.tsx +202 -61
- package/src/theme/Navbar/styles.module.css +10 -3
- package/src/theme/NavbarItem/DefaultNavbarItem.tsx +42 -154
- package/src/theme/NavbarItem/DocNavbarItem.tsx +11 -14
- package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +33 -21
- package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
- package/src/theme/NavbarItem/DropdownNavbarItem.tsx +180 -0
- package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +8 -7
- package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
- package/src/theme/NavbarItem/index.tsx +41 -16
- package/src/theme/Seo/index.tsx +7 -4
- package/src/theme/SkipToContent/index.tsx +5 -6
- package/src/theme/SkipToContent/styles.module.css +1 -0
- package/src/theme/TOC/index.tsx +12 -41
- package/src/theme/TOC/styles.module.css +1 -1
- package/src/theme/TOCCollapsible/index.tsx +58 -0
- package/src/theme/TOCCollapsible/styles.module.css +50 -0
- package/src/theme/TOCInline/index.tsx +13 -32
- package/src/theme/TOCItems/index.tsx +96 -0
- package/src/theme/Tabs/__tests__/index.test.tsx +129 -0
- package/src/theme/Tabs/index.tsx +93 -49
- package/src/theme/Tabs/styles.module.css +0 -13
- package/src/theme/Tag/index.tsx +31 -0
- package/src/theme/Tag/styles.module.css +70 -0
- package/src/theme/TagsListByLetter/index.tsx +45 -0
- package/src/theme/TagsListByLetter/styles.module.css +11 -0
- package/src/theme/TagsListInline/index.tsx +35 -0
- package/src/theme/TagsListInline/styles.module.css +15 -0
- package/src/theme/ThemedImage/index.tsx +6 -6
- package/src/theme/Toggle/index.tsx +20 -15
- package/src/theme/Toggle/styles.module.css +91 -0
- package/src/theme/UserPreferencesProvider/index.tsx +0 -5
- package/src/theme/hooks/useContextualSearchFilters.ts +1 -1
- package/src/theme/hooks/useHideableNavbar.ts +32 -45
- package/src/theme/hooks/useTabGroupChoice.ts +4 -4
- package/src/theme/hooks/useTheme.ts +2 -2
- package/src/theme/hooks/useWindowSize.ts +38 -20
- package/src/theme/prism-include-languages.ts +3 -2
- package/src/translations.ts +6 -10
- package/src/types.d.ts +338 -138
- package/src/{validateThemeConfig.js → validateThemeConfig.ts} +144 -90
- package/tsconfig.json +1 -2
- package/update-code-translations.js +10 -6
- package/update-code-translations.test.js +1 -1
- package/update.js +151 -0
- package/lib/theme/Toggle/styles.css +0 -103
- package/lib/theme/hooks/useAnnouncementBar.js +0 -63
- package/lib/theme/hooks/useScrollPosition.js +0 -49
- package/lib/theme/hooks/useTOCHighlight.js +0 -87
- package/lib-next/theme/Toggle/styles.css +0 -103
- package/lib-next/theme/hooks/useAnnouncementBar.js +0 -49
- package/lib-next/theme/hooks/useScrollPosition.js +0 -38
- package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
- package/src/theme/Toggle/styles.css +0 -103
- package/src/theme/hooks/useAnnouncementBar.ts +0 -58
- package/src/theme/hooks/useScrollPosition.ts +0 -45
- package/src/theme/hooks/useTOCHighlight.ts +0 -98
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _clsx = _interopRequireDefault(require("clsx"));
|
|
11
|
+
|
|
12
|
+
var _Translate = require("@docusaurus/Translate");
|
|
13
|
+
|
|
14
|
+
var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
|
|
15
|
+
|
|
16
|
+
var _themeCommon = require("@docusaurus/theme-common");
|
|
17
|
+
|
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
+
|
|
20
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
|
+
|
|
22
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
26
|
+
*
|
|
27
|
+
* This source code is licensed under the MIT license found in the
|
|
28
|
+
* LICENSE file in the root directory of this source tree.
|
|
29
|
+
*/
|
|
30
|
+
const threshold = 300; // Not all have support for smooth scrolling (particularly Safari mobile iOS)
|
|
31
|
+
// TODO proper detection is currently unreliable!
|
|
32
|
+
// see https://github.com/wessberg/scroll-behavior-polyfill/issues/16
|
|
33
|
+
|
|
34
|
+
const SupportsNativeSmoothScrolling = false; // const SupportsNativeSmoothScrolling = ExecutionEnvironment.canUseDOM && 'scrollBehavior' in document.documentElement.style;
|
|
35
|
+
|
|
36
|
+
function smoothScrollTopNative() {
|
|
37
|
+
window.scrollTo({
|
|
38
|
+
top: 0,
|
|
39
|
+
behavior: 'smooth'
|
|
40
|
+
});
|
|
41
|
+
return () => {// Nothing to cancel, it's natively cancelled if user tries to scroll down
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function smoothScrollTopPolyfill() {
|
|
46
|
+
let raf = null;
|
|
47
|
+
|
|
48
|
+
function rafRecursion() {
|
|
49
|
+
const currentScroll = document.documentElement.scrollTop;
|
|
50
|
+
|
|
51
|
+
if (currentScroll > 0) {
|
|
52
|
+
raf = requestAnimationFrame(rafRecursion);
|
|
53
|
+
window.scrollTo(0, Math.floor(currentScroll * 0.85));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
rafRecursion(); // Break the recursion
|
|
58
|
+
// Prevents the user from "fighting" against that recursion producing a weird UX
|
|
59
|
+
|
|
60
|
+
return () => raf && cancelAnimationFrame(raf);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function useSmoothScrollToTop() {
|
|
64
|
+
const lastCancelRef = (0, _react.useRef)(null);
|
|
65
|
+
|
|
66
|
+
function smoothScrollTop() {
|
|
67
|
+
lastCancelRef.current = SupportsNativeSmoothScrolling ? smoothScrollTopNative() : smoothScrollTopPolyfill();
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return {
|
|
71
|
+
smoothScrollTop,
|
|
72
|
+
cancelScrollToTop: () => {
|
|
73
|
+
var _lastCancelRef$curren;
|
|
74
|
+
|
|
75
|
+
return (_lastCancelRef$curren = lastCancelRef.current) === null || _lastCancelRef$curren === void 0 ? void 0 : _lastCancelRef$curren.call(lastCancelRef);
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function BackToTopButton() {
|
|
81
|
+
const [show, setShow] = (0, _react.useState)(false);
|
|
82
|
+
const isFocusedAnchor = (0, _react.useRef)(false);
|
|
83
|
+
const {
|
|
84
|
+
smoothScrollTop,
|
|
85
|
+
cancelScrollToTop
|
|
86
|
+
} = useSmoothScrollToTop();
|
|
87
|
+
(0, _themeCommon.useScrollPosition)(({
|
|
88
|
+
scrollY: scrollTop
|
|
89
|
+
}, lastPosition) => {
|
|
90
|
+
const lastScrollTop = lastPosition === null || lastPosition === void 0 ? void 0 : lastPosition.scrollY; // No lastScrollTop means component is just being mounted.
|
|
91
|
+
// Not really a scroll event from the user, so we ignore it
|
|
92
|
+
|
|
93
|
+
if (!lastScrollTop) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if (isFocusedAnchor.current) {
|
|
98
|
+
isFocusedAnchor.current = false;
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
const isScrollingUp = scrollTop < lastScrollTop;
|
|
103
|
+
|
|
104
|
+
if (!isScrollingUp) {
|
|
105
|
+
cancelScrollToTop();
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (scrollTop < threshold) {
|
|
109
|
+
setShow(false);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (isScrollingUp) {
|
|
114
|
+
const documentHeight = document.documentElement.scrollHeight;
|
|
115
|
+
const windowHeight = window.innerHeight;
|
|
116
|
+
|
|
117
|
+
if (scrollTop + windowHeight < documentHeight) {
|
|
118
|
+
setShow(true);
|
|
119
|
+
}
|
|
120
|
+
} else {
|
|
121
|
+
setShow(false);
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
(0, _themeCommon.useLocationChange)(locationChangeEvent => {
|
|
125
|
+
if (locationChangeEvent.location.hash) {
|
|
126
|
+
isFocusedAnchor.current = true;
|
|
127
|
+
setShow(false);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
return <button aria-label={(0, _Translate.translate)({
|
|
131
|
+
id: 'theme.BackToTopButton.buttonAriaLabel',
|
|
132
|
+
message: 'Scroll back to top',
|
|
133
|
+
description: 'The ARIA label for the back to top button'
|
|
134
|
+
})} className={(0, _clsx.default)('clean-btn', _themeCommon.ThemeClassNames.common.backToTopButton, _stylesModule.default.backToTopButton, {
|
|
135
|
+
[_stylesModule.default.backToTopButtonShow]: show
|
|
136
|
+
})} type="button" onClick={() => smoothScrollTop()} />;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
var _default = BackToTopButton;
|
|
140
|
+
exports.default = _default;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
.backToTopButton {
|
|
9
|
+
position: fixed;
|
|
10
|
+
right: 1.3rem;
|
|
11
|
+
bottom: 1.3rem;
|
|
12
|
+
border-radius: 50%;
|
|
13
|
+
background-color: var(--ifm-color-emphasis-200);
|
|
14
|
+
width: 3rem;
|
|
15
|
+
height: 3rem;
|
|
16
|
+
z-index: var(--ifm-z-index-fixed);
|
|
17
|
+
box-shadow: var(--ifm-global-shadow-lw);
|
|
18
|
+
transition: all var(--ifm-transition-fast)
|
|
19
|
+
var(--ifm-transition-timing-default);
|
|
20
|
+
opacity: 0;
|
|
21
|
+
transform: scale(0);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.backToTopButton:after {
|
|
25
|
+
content: ' ';
|
|
26
|
+
display: inline-block;
|
|
27
|
+
mask: var(--ifm-menu-link-sublist-icon) 50% / 2rem 2rem no-repeat;
|
|
28
|
+
background-color: var(--ifm-color-emphasis-1000);
|
|
29
|
+
width: 100%;
|
|
30
|
+
height: 100%;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@media (hover: hover) {
|
|
34
|
+
.backToTopButton:hover {
|
|
35
|
+
background-color: var(--ifm-color-emphasis-300);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.backToTopButtonShow {
|
|
40
|
+
opacity: 1;
|
|
41
|
+
transform: scale(1);
|
|
42
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = BlogArchive;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _Layout = _interopRequireDefault(require("@theme/Layout"));
|
|
11
|
+
|
|
12
|
+
var _Link = _interopRequireDefault(require("@docusaurus/Link"));
|
|
13
|
+
|
|
14
|
+
var _Translate = require("@docusaurus/Translate");
|
|
15
|
+
|
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
20
|
+
*
|
|
21
|
+
* This source code is licensed under the MIT license found in the
|
|
22
|
+
* LICENSE file in the root directory of this source tree.
|
|
23
|
+
*/
|
|
24
|
+
function Year({
|
|
25
|
+
year,
|
|
26
|
+
posts
|
|
27
|
+
}) {
|
|
28
|
+
return <>
|
|
29
|
+
<h3>{year}</h3>
|
|
30
|
+
<ul>
|
|
31
|
+
{posts.map(post => <li key={post.metadata.date}>
|
|
32
|
+
<_Link.default to={post.metadata.permalink}>
|
|
33
|
+
{post.metadata.formattedDate} - {post.metadata.title}
|
|
34
|
+
</_Link.default>
|
|
35
|
+
</li>)}
|
|
36
|
+
</ul>
|
|
37
|
+
</>;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function YearsSection({
|
|
41
|
+
years
|
|
42
|
+
}) {
|
|
43
|
+
return <section className="margin-vert--lg">
|
|
44
|
+
<div className="container">
|
|
45
|
+
<div className="row">
|
|
46
|
+
{years.map((_props, idx) => <div key={idx} className="col col--4 margin-vert--lg">
|
|
47
|
+
<Year {..._props} />
|
|
48
|
+
</div>)}
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
</section>;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function listPostsByYears(blogPosts) {
|
|
55
|
+
const postsByYear = blogPosts.reduceRight((posts, post) => {
|
|
56
|
+
const year = post.metadata.date.split('-')[0];
|
|
57
|
+
const yearPosts = posts.get(year) || [];
|
|
58
|
+
return posts.set(year, [post, ...yearPosts]);
|
|
59
|
+
}, new Map());
|
|
60
|
+
return Array.from(postsByYear, ([year, posts]) => ({
|
|
61
|
+
year,
|
|
62
|
+
posts
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function BlogArchive({
|
|
67
|
+
archive
|
|
68
|
+
}) {
|
|
69
|
+
const title = (0, _Translate.translate)({
|
|
70
|
+
id: 'theme.blog.archive.title',
|
|
71
|
+
message: 'Archive',
|
|
72
|
+
description: 'The page & hero title of the blog archive page'
|
|
73
|
+
});
|
|
74
|
+
const description = (0, _Translate.translate)({
|
|
75
|
+
id: 'theme.blog.archive.description',
|
|
76
|
+
message: 'Archive',
|
|
77
|
+
description: 'The page & hero description of the blog archive page'
|
|
78
|
+
});
|
|
79
|
+
const years = listPostsByYears(archive.blogPosts);
|
|
80
|
+
return <_Layout.default title={title} description={description}>
|
|
81
|
+
<header className="hero hero--primary">
|
|
82
|
+
<div className="container">
|
|
83
|
+
<h1 className="hero__title">{title}</h1>
|
|
84
|
+
<p className="hero__subtitle">{description}</p>
|
|
85
|
+
</div>
|
|
86
|
+
</header>
|
|
87
|
+
<main>{years.length > 0 && <YearsSection years={years} />}</main>
|
|
88
|
+
</_Layout.default>;
|
|
89
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _clsx = _interopRequireDefault(require("clsx"));
|
|
11
|
+
|
|
12
|
+
var _Layout = _interopRequireDefault(require("@theme/Layout"));
|
|
13
|
+
|
|
14
|
+
var _BlogSidebar = _interopRequireDefault(require("@theme/BlogSidebar"));
|
|
15
|
+
|
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
20
|
+
*
|
|
21
|
+
* This source code is licensed under the MIT license found in the
|
|
22
|
+
* LICENSE file in the root directory of this source tree.
|
|
23
|
+
*/
|
|
24
|
+
function BlogLayout(props) {
|
|
25
|
+
const {
|
|
26
|
+
sidebar,
|
|
27
|
+
toc,
|
|
28
|
+
children,
|
|
29
|
+
...layoutProps
|
|
30
|
+
} = props;
|
|
31
|
+
const hasSidebar = sidebar && sidebar.items.length > 0;
|
|
32
|
+
return <_Layout.default {...layoutProps}>
|
|
33
|
+
<div className="container margin-vert--lg">
|
|
34
|
+
<div className="row">
|
|
35
|
+
{hasSidebar && <aside className="col col--3">
|
|
36
|
+
<_BlogSidebar.default sidebar={sidebar} />
|
|
37
|
+
</aside>}
|
|
38
|
+
<main className={(0, _clsx.default)('col', {
|
|
39
|
+
'col--7': hasSidebar,
|
|
40
|
+
'col--9 col--offset-1': !hasSidebar
|
|
41
|
+
})} itemScope itemType="http://schema.org/Blog">
|
|
42
|
+
{children}
|
|
43
|
+
</main>
|
|
44
|
+
{toc && <div className="col col--2">{toc}</div>}
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
</_Layout.default>;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
var _default = BlogLayout;
|
|
51
|
+
exports.default = _default;
|
|
@@ -9,14 +9,12 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
9
9
|
|
|
10
10
|
var _useDocusaurusContext = _interopRequireDefault(require("@docusaurus/useDocusaurusContext"));
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _BlogLayout = _interopRequireDefault(require("@theme/BlogLayout"));
|
|
13
13
|
|
|
14
14
|
var _BlogPostItem = _interopRequireDefault(require("@theme/BlogPostItem"));
|
|
15
15
|
|
|
16
16
|
var _BlogListPaginator = _interopRequireDefault(require("@theme/BlogListPaginator"));
|
|
17
17
|
|
|
18
|
-
var _BlogSidebar = _interopRequireDefault(require("@theme/BlogSidebar"));
|
|
19
|
-
|
|
20
18
|
var _themeCommon = require("@docusaurus/theme-common");
|
|
21
19
|
|
|
22
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -45,26 +43,17 @@ function BlogListPage(props) {
|
|
|
45
43
|
} = metadata;
|
|
46
44
|
const isBlogOnlyMode = permalink === '/';
|
|
47
45
|
const title = isBlogOnlyMode ? siteTitle : blogTitle;
|
|
48
|
-
return <
|
|
46
|
+
return <_BlogLayout.default title={title} description={blogDescription} wrapperClassName={_themeCommon.ThemeClassNames.wrapper.blogPages} pageClassName={_themeCommon.ThemeClassNames.page.blogListPage} searchMetadatas={{
|
|
49
47
|
// assign unique search tag to exclude this page from search results!
|
|
50
48
|
tag: 'blog_posts_list'
|
|
51
|
-
}}>
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
content: BlogPostContent
|
|
60
|
-
}) => <_BlogPostItem.default key={BlogPostContent.metadata.permalink} frontMatter={BlogPostContent.frontMatter} metadata={BlogPostContent.metadata} truncated={BlogPostContent.metadata.truncated}>
|
|
61
|
-
<BlogPostContent />
|
|
62
|
-
</_BlogPostItem.default>)}
|
|
63
|
-
<_BlogListPaginator.default metadata={metadata} />
|
|
64
|
-
</main>
|
|
65
|
-
</div>
|
|
66
|
-
</div>
|
|
67
|
-
</_Layout.default>;
|
|
49
|
+
}} sidebar={sidebar}>
|
|
50
|
+
{items.map(({
|
|
51
|
+
content: BlogPostContent
|
|
52
|
+
}) => <_BlogPostItem.default key={BlogPostContent.metadata.permalink} frontMatter={BlogPostContent.frontMatter} assets={BlogPostContent.assets} metadata={BlogPostContent.metadata} truncated={BlogPostContent.metadata.truncated}>
|
|
53
|
+
<BlogPostContent />
|
|
54
|
+
</_BlogPostItem.default>)}
|
|
55
|
+
<_BlogListPaginator.default metadata={metadata} />
|
|
56
|
+
</_BlogLayout.default>;
|
|
68
57
|
}
|
|
69
58
|
|
|
70
59
|
var _default = BlogListPage;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _Link = _interopRequireDefault(require("@docusaurus/Link"));
|
|
11
|
+
|
|
12
|
+
var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
|
|
13
|
+
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
18
|
+
*
|
|
19
|
+
* This source code is licensed under the MIT license found in the
|
|
20
|
+
* LICENSE file in the root directory of this source tree.
|
|
21
|
+
*/
|
|
22
|
+
function BlogPostAuthor({
|
|
23
|
+
author
|
|
24
|
+
}) {
|
|
25
|
+
const {
|
|
26
|
+
name,
|
|
27
|
+
title,
|
|
28
|
+
url,
|
|
29
|
+
imageURL
|
|
30
|
+
} = author;
|
|
31
|
+
return <div className="avatar margin-bottom--sm">
|
|
32
|
+
{imageURL && <_Link.default className="avatar__photo-link avatar__photo" href={url}>
|
|
33
|
+
<img className={_stylesModule.default.image} src={imageURL} alt={name} />
|
|
34
|
+
</_Link.default>}
|
|
35
|
+
|
|
36
|
+
{// Note: only legacy author frontmatter allow empty name (not frontMatter.authors)
|
|
37
|
+
name && <div className="avatar__intro" itemProp="author" itemScope itemType="https://schema.org/Person">
|
|
38
|
+
<div className="avatar__name">
|
|
39
|
+
<_Link.default href={url} itemProp="url">
|
|
40
|
+
<span itemProp="name">{name}</span>
|
|
41
|
+
</_Link.default>
|
|
42
|
+
</div>
|
|
43
|
+
{title && <small className="avatar__subtitle" itemProp="description">
|
|
44
|
+
{title}
|
|
45
|
+
</small>}
|
|
46
|
+
</div>}
|
|
47
|
+
</div>;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
var _default = BlogPostAuthor;
|
|
51
|
+
exports.default = _default;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
.image {
|
|
9
|
+
width: 100%;
|
|
10
|
+
height: 100%;
|
|
11
|
+
object-fit: cover;
|
|
12
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = BlogPostAuthors;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _clsx = _interopRequireDefault(require("clsx"));
|
|
11
|
+
|
|
12
|
+
var _BlogPostAuthor = _interopRequireDefault(require("@theme/BlogPostAuthor"));
|
|
13
|
+
|
|
14
|
+
var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
|
|
15
|
+
|
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
20
|
+
*
|
|
21
|
+
* This source code is licensed under the MIT license found in the
|
|
22
|
+
* LICENSE file in the root directory of this source tree.
|
|
23
|
+
*/
|
|
24
|
+
// Component responsible for the authors layout
|
|
25
|
+
function BlogPostAuthors({
|
|
26
|
+
authors,
|
|
27
|
+
assets
|
|
28
|
+
}) {
|
|
29
|
+
const authorsCount = authors.length;
|
|
30
|
+
|
|
31
|
+
if (authorsCount === 0) {
|
|
32
|
+
return <></>;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return <div className="row margin-top--md margin-bottom--sm">
|
|
36
|
+
{authors.map((author, idx) => {
|
|
37
|
+
var _assets$authorsImageU;
|
|
38
|
+
|
|
39
|
+
return <div className={(0, _clsx.default)('col col--6', _stylesModule.default.authorCol)} key={idx}>
|
|
40
|
+
<_BlogPostAuthor.default author={{ ...author,
|
|
41
|
+
// Handle author images using relative paths
|
|
42
|
+
imageURL: (_assets$authorsImageU = assets.authorsImageUrls[idx]) !== null && _assets$authorsImageU !== void 0 ? _assets$authorsImageU : author.imageURL
|
|
43
|
+
}} />
|
|
44
|
+
</div>;
|
|
45
|
+
})}
|
|
46
|
+
</div>;
|
|
47
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
.authorCol {
|
|
9
|
+
max-width: inherit !important;
|
|
10
|
+
flex-grow: 1 !important;
|
|
11
|
+
}
|
|
@@ -15,16 +15,20 @@ var _Translate = _interopRequireWildcard(require("@docusaurus/Translate"));
|
|
|
15
15
|
|
|
16
16
|
var _Link = _interopRequireDefault(require("@docusaurus/Link"));
|
|
17
17
|
|
|
18
|
+
var _useBaseUrl = require("@docusaurus/useBaseUrl");
|
|
19
|
+
|
|
18
20
|
var _themeCommon = require("@docusaurus/theme-common");
|
|
19
21
|
|
|
20
22
|
var _MDXComponents = _interopRequireDefault(require("@theme/MDXComponents"));
|
|
21
23
|
|
|
22
|
-
var _Seo = _interopRequireDefault(require("@theme/Seo"));
|
|
23
|
-
|
|
24
24
|
var _EditThisPage = _interopRequireDefault(require("@theme/EditThisPage"));
|
|
25
25
|
|
|
26
26
|
var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
|
|
27
27
|
|
|
28
|
+
var _TagsListInline = _interopRequireDefault(require("@theme/TagsListInline"));
|
|
29
|
+
|
|
30
|
+
var _BlogPostAuthors = _interopRequireDefault(require("@theme/BlogPostAuthors"));
|
|
31
|
+
|
|
28
32
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
29
33
|
|
|
30
34
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -55,10 +59,16 @@ function useReadingTimePlural() {
|
|
|
55
59
|
}
|
|
56
60
|
|
|
57
61
|
function BlogPostItem(props) {
|
|
62
|
+
var _assets$image;
|
|
63
|
+
|
|
58
64
|
const readingTimePlural = useReadingTimePlural();
|
|
65
|
+
const {
|
|
66
|
+
withBaseUrl
|
|
67
|
+
} = (0, _useBaseUrl.useBaseUrlUtils)();
|
|
59
68
|
const {
|
|
60
69
|
children,
|
|
61
70
|
frontMatter,
|
|
71
|
+
assets,
|
|
62
72
|
metadata,
|
|
63
73
|
truncated,
|
|
64
74
|
isBlogPostPage = false
|
|
@@ -70,91 +80,72 @@ function BlogPostItem(props) {
|
|
|
70
80
|
tags,
|
|
71
81
|
readingTime,
|
|
72
82
|
title,
|
|
73
|
-
editUrl
|
|
83
|
+
editUrl,
|
|
84
|
+
authors
|
|
74
85
|
} = metadata;
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
keywords
|
|
79
|
-
} = frontMatter;
|
|
80
|
-
const authorURL = frontMatter.author_url || frontMatter.authorURL;
|
|
81
|
-
const authorTitle = frontMatter.author_title || frontMatter.authorTitle;
|
|
82
|
-
const authorImageURL = frontMatter.author_image_url || frontMatter.authorImageURL;
|
|
86
|
+
const image = (_assets$image = assets.image) !== null && _assets$image !== void 0 ? _assets$image : frontMatter.image;
|
|
87
|
+
const truncatedPost = !isBlogPostPage && truncated;
|
|
88
|
+
const tagsExists = tags.length > 0;
|
|
83
89
|
|
|
84
90
|
const renderPostHeader = () => {
|
|
85
91
|
const TitleHeading = isBlogPostPage ? 'h1' : 'h2';
|
|
86
92
|
return <header>
|
|
87
|
-
<TitleHeading className={_stylesModule.default.blogPostTitle}>
|
|
88
|
-
{isBlogPostPage ? title : <_Link.default to={permalink}>
|
|
93
|
+
<TitleHeading className={_stylesModule.default.blogPostTitle} itemProp="headline">
|
|
94
|
+
{isBlogPostPage ? title : <_Link.default itemProp="url" to={permalink}>
|
|
95
|
+
{title}
|
|
96
|
+
</_Link.default>}
|
|
89
97
|
</TitleHeading>
|
|
90
98
|
<div className={(0, _clsx.default)(_stylesModule.default.blogPostData, 'margin-vert--md')}>
|
|
91
|
-
<time dateTime={date}>
|
|
99
|
+
<time dateTime={date} itemProp="datePublished">
|
|
100
|
+
{formattedDate}
|
|
101
|
+
</time>
|
|
92
102
|
|
|
93
|
-
{readingTime && <>
|
|
103
|
+
{typeof readingTime !== 'undefined' && <>
|
|
94
104
|
{' · '}
|
|
95
105
|
{readingTimePlural(readingTime)}
|
|
96
106
|
</>}
|
|
97
107
|
</div>
|
|
98
|
-
<
|
|
99
|
-
{authorImageURL && <_Link.default className="avatar__photo-link avatar__photo" href={authorURL}>
|
|
100
|
-
<img src={authorImageURL} alt={author} />
|
|
101
|
-
</_Link.default>}
|
|
102
|
-
<div className="avatar__intro">
|
|
103
|
-
{author && <>
|
|
104
|
-
<div className="avatar__name">
|
|
105
|
-
<_Link.default href={authorURL}>{author}</_Link.default>
|
|
106
|
-
</div>
|
|
107
|
-
<small className="avatar__subtitle">{authorTitle}</small>
|
|
108
|
-
</>}
|
|
109
|
-
</div>
|
|
110
|
-
</div>
|
|
108
|
+
<_BlogPostAuthors.default authors={authors} assets={assets} />
|
|
111
109
|
</header>;
|
|
112
110
|
};
|
|
113
111
|
|
|
114
|
-
return
|
|
115
|
-
|
|
116
|
-
keywords,
|
|
117
|
-
image
|
|
118
|
-
}} />
|
|
112
|
+
return <article className={!isBlogPostPage ? 'margin-bottom--xl' : undefined} itemProp="blogPost" itemScope itemType="http://schema.org/BlogPosting">
|
|
113
|
+
{renderPostHeader()}
|
|
119
114
|
|
|
120
|
-
<
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
115
|
+
{image && <meta itemProp="image" content={withBaseUrl(image, {
|
|
116
|
+
absolute: true
|
|
117
|
+
})} />}
|
|
118
|
+
|
|
119
|
+
<div className="markdown" itemProp="articleBody">
|
|
120
|
+
<_react2.MDXProvider components={_MDXComponents.default}>{children}</_react2.MDXProvider>
|
|
121
|
+
</div>
|
|
122
|
+
|
|
123
|
+
{(tagsExists || truncated) && <footer className={(0, _clsx.default)('row docusaurus-mt-lg', {
|
|
124
|
+
[_stylesModule.default.blogPostDetailsFull]: isBlogPostPage
|
|
125
|
+
})}>
|
|
126
|
+
{tagsExists && <div className={(0, _clsx.default)('col', {
|
|
127
|
+
'col--9': truncatedPost
|
|
128
|
+
})}>
|
|
129
|
+
<_TagsListInline.default tags={tags} />
|
|
130
|
+
</div>}
|
|
131
|
+
|
|
132
|
+
{isBlogPostPage && editUrl && <div className="col margin-top--sm">
|
|
133
|
+
<_EditThisPage.default editUrl={editUrl} />
|
|
134
|
+
</div>}
|
|
135
|
+
|
|
136
|
+
{truncatedPost && <div className={(0, _clsx.default)('col text--right', {
|
|
137
|
+
'col--3': tagsExists
|
|
127
138
|
})}>
|
|
128
|
-
|
|
139
|
+
<_Link.default to={metadata.permalink} aria-label={`Read more about ${title}`}>
|
|
129
140
|
<b>
|
|
130
|
-
<_Translate.default id="theme.
|
|
131
|
-
|
|
141
|
+
<_Translate.default id="theme.blog.post.readMore" description="The label used in blog post item excerpts to link to full blog posts">
|
|
142
|
+
Read More
|
|
132
143
|
</_Translate.default>
|
|
133
144
|
</b>
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
{label}
|
|
139
|
-
</_Link.default>)}
|
|
140
|
-
</div>}
|
|
141
|
-
|
|
142
|
-
{isBlogPostPage && editUrl && <div className="col margin-top--sm">
|
|
143
|
-
<_EditThisPage.default editUrl={editUrl} />
|
|
144
|
-
</div>}
|
|
145
|
-
|
|
146
|
-
{!isBlogPostPage && truncated && <div className="col text--right">
|
|
147
|
-
<_Link.default to={metadata.permalink} aria-label={`Read more about ${title}`}>
|
|
148
|
-
<b>
|
|
149
|
-
<_Translate.default id="theme.blog.post.readMore" description="The label used in blog post item excerpts to link to full blog posts">
|
|
150
|
-
Read More
|
|
151
|
-
</_Translate.default>
|
|
152
|
-
</b>
|
|
153
|
-
</_Link.default>
|
|
154
|
-
</div>}
|
|
155
|
-
</footer>}
|
|
156
|
-
</article>
|
|
157
|
-
</>;
|
|
145
|
+
</_Link.default>
|
|
146
|
+
</div>}
|
|
147
|
+
</footer>}
|
|
148
|
+
</article>;
|
|
158
149
|
}
|
|
159
150
|
|
|
160
151
|
var _default = BlogPostItem;
|