@azerion/bunosaurus-theme-common 0.0.0-stage → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/lib/components/Collapsible/index.d.ts +59 -0
- package/lib/components/Collapsible/index.d.ts.map +1 -0
- package/lib/components/Collapsible/index.js +145 -0
- package/lib/components/Collapsible/index.js.map +1 -0
- package/lib/components/Details/index.d.ts +20 -0
- package/lib/components/Details/index.d.ts.map +1 -0
- package/lib/components/Details/index.js +86 -0
- package/lib/components/Details/index.js.map +1 -0
- package/lib/components/Details/styles.module.css +66 -0
- package/lib/components/ThemedComponent/index.d.ts +31 -0
- package/lib/components/ThemedComponent/index.d.ts.map +1 -0
- package/lib/components/ThemedComponent/index.js +47 -0
- package/lib/components/ThemedComponent/index.js.map +1 -0
- package/lib/components/ThemedComponent/styles.module.css +26 -0
- package/lib/contexts/announcementBar.d.ts +21 -0
- package/lib/contexts/announcementBar.d.ts.map +1 -0
- package/lib/contexts/announcementBar.js +72 -0
- package/lib/contexts/announcementBar.js.map +1 -0
- package/lib/contexts/colorMode.d.ts +23 -0
- package/lib/contexts/colorMode.d.ts.map +1 -0
- package/lib/contexts/colorMode.js +163 -0
- package/lib/contexts/colorMode.js.map +1 -0
- package/lib/contexts/navbarMobileSidebar.d.ts +31 -0
- package/lib/contexts/navbarMobileSidebar.d.ts.map +1 -0
- package/lib/contexts/navbarMobileSidebar.js +65 -0
- package/lib/contexts/navbarMobileSidebar.js.map +1 -0
- package/lib/contexts/navbarSecondaryMenu/content.d.ts +37 -0
- package/lib/contexts/navbarSecondaryMenu/content.d.ts.map +1 -0
- package/lib/contexts/navbarSecondaryMenu/content.js +50 -0
- package/lib/contexts/navbarSecondaryMenu/content.js.map +1 -0
- package/lib/contexts/navbarSecondaryMenu/display.d.ts +24 -0
- package/lib/contexts/navbarSecondaryMenu/display.d.ts.map +1 -0
- package/lib/contexts/navbarSecondaryMenu/display.js +62 -0
- package/lib/contexts/navbarSecondaryMenu/display.js.map +1 -0
- package/lib/hooks/useBackToTopButton.d.ts +27 -0
- package/lib/hooks/useBackToTopButton.d.ts.map +1 -0
- package/lib/hooks/useBackToTopButton.js +50 -0
- package/lib/hooks/useBackToTopButton.js.map +1 -0
- package/lib/hooks/useCodeWordWrap.d.ts +15 -0
- package/lib/hooks/useCodeWordWrap.d.ts.map +1 -0
- package/lib/hooks/useCodeWordWrap.js +67 -0
- package/lib/hooks/useCodeWordWrap.js.map +1 -0
- package/lib/hooks/useHideableNavbar.d.ts +17 -0
- package/lib/hooks/useHideableNavbar.d.ts.map +1 -0
- package/lib/hooks/useHideableNavbar.js +65 -0
- package/lib/hooks/useHideableNavbar.js.map +1 -0
- package/lib/hooks/useLockBodyScroll.d.ts +12 -0
- package/lib/hooks/useLockBodyScroll.d.ts.map +1 -0
- package/lib/hooks/useLockBodyScroll.js +20 -0
- package/lib/hooks/useLockBodyScroll.js.map +1 -0
- package/lib/hooks/useMutationObserver.d.ts +4 -0
- package/lib/hooks/useMutationObserver.d.ts.map +1 -0
- package/lib/hooks/useMutationObserver.js +29 -0
- package/lib/hooks/useMutationObserver.js.map +1 -0
- package/lib/hooks/usePrismTheme.d.ts +13 -0
- package/lib/hooks/usePrismTheme.d.ts.map +1 -0
- package/lib/hooks/usePrismTheme.js +21 -0
- package/lib/hooks/usePrismTheme.js.map +1 -0
- package/lib/hooks/useTOCHighlight.d.ts +25 -0
- package/lib/hooks/useTOCHighlight.d.ts.map +1 -0
- package/lib/hooks/useTOCHighlight.js +130 -0
- package/lib/hooks/useTOCHighlight.js.map +1 -0
- package/lib/hooks/useWindowSize.d.ts +27 -0
- package/lib/hooks/useWindowSize.d.ts.map +1 -0
- package/lib/hooks/useWindowSize.js +49 -0
- package/lib/hooks/useWindowSize.js.map +1 -0
- package/lib/index.d.ts +30 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +37 -0
- package/lib/index.js.map +1 -0
- package/lib/internal.d.ts +35 -0
- package/lib/internal.d.ts.map +1 -0
- package/lib/internal.js +45 -0
- package/lib/internal.js.map +1 -0
- package/lib/translations/blogTranslations.d.ts +20 -0
- package/lib/translations/blogTranslations.d.ts.map +1 -0
- package/lib/translations/blogTranslations.js +52 -0
- package/lib/translations/blogTranslations.js.map +1 -0
- package/lib/translations/contentVisibilityTranslations.d.ts +12 -0
- package/lib/translations/contentVisibilityTranslations.d.ts.map +1 -0
- package/lib/translations/contentVisibilityTranslations.js +30 -0
- package/lib/translations/contentVisibilityTranslations.js.map +1 -0
- package/lib/translations/docsTranslations.d.ts +8 -0
- package/lib/translations/docsTranslations.d.ts.map +1 -0
- package/lib/translations/docsTranslations.js +17 -0
- package/lib/translations/docsTranslations.js.map +1 -0
- package/lib/utils/IntlUtils.d.ts +2 -0
- package/lib/utils/IntlUtils.d.ts.map +1 -0
- package/lib/utils/IntlUtils.js +20 -0
- package/lib/utils/IntlUtils.js.map +1 -0
- package/lib/utils/ThemeClassNames.d.ts +99 -0
- package/lib/utils/ThemeClassNames.d.ts.map +1 -0
- package/lib/utils/ThemeClassNames.js +107 -0
- package/lib/utils/ThemeClassNames.js.map +1 -0
- package/lib/utils/accessibilityUtils.d.ts +8 -0
- package/lib/utils/accessibilityUtils.d.ts.map +1 -0
- package/lib/utils/accessibilityUtils.js +10 -0
- package/lib/utils/accessibilityUtils.js.map +1 -0
- package/lib/utils/admonitionUtils.d.ts +12 -0
- package/lib/utils/admonitionUtils.d.ts.map +1 -0
- package/lib/utils/admonitionUtils.js +32 -0
- package/lib/utils/admonitionUtils.js.map +1 -0
- package/lib/utils/anchorUtils.d.ts +16 -0
- package/lib/utils/anchorUtils.d.ts.map +1 -0
- package/lib/utils/anchorUtils.js +26 -0
- package/lib/utils/anchorUtils.js.map +1 -0
- package/lib/utils/anchorUtils.module.css +14 -0
- package/lib/utils/codeBlockUtils.d.ts +101 -0
- package/lib/utils/codeBlockUtils.d.ts.map +1 -0
- package/lib/utils/codeBlockUtils.js +310 -0
- package/lib/utils/codeBlockUtils.js.map +1 -0
- package/lib/utils/emojiUtils.d.ts +20 -0
- package/lib/utils/emojiUtils.d.ts.map +1 -0
- package/lib/utils/emojiUtils.js +32 -0
- package/lib/utils/emojiUtils.js.map +1 -0
- package/lib/utils/errorBoundaryUtils.d.ts +31 -0
- package/lib/utils/errorBoundaryUtils.d.ts.map +1 -0
- package/lib/utils/errorBoundaryUtils.js +48 -0
- package/lib/utils/errorBoundaryUtils.js.map +1 -0
- package/lib/utils/errorBoundaryUtils.module.css +16 -0
- package/lib/utils/footerUtils.d.ts +13 -0
- package/lib/utils/footerUtils.d.ts.map +1 -0
- package/lib/utils/footerUtils.js +14 -0
- package/lib/utils/footerUtils.js.map +1 -0
- package/lib/utils/historyUtils.d.ts +39 -0
- package/lib/utils/historyUtils.d.ts.map +1 -0
- package/lib/utils/historyUtils.js +148 -0
- package/lib/utils/historyUtils.js.map +1 -0
- package/lib/utils/jsUtils.d.ts +24 -0
- package/lib/utils/jsUtils.d.ts.map +1 -0
- package/lib/utils/jsUtils.js +43 -0
- package/lib/utils/jsUtils.js.map +1 -0
- package/lib/utils/metadataUtils.d.ts +38 -0
- package/lib/utils/metadataUtils.d.ts.map +1 -0
- package/lib/utils/metadataUtils.js +87 -0
- package/lib/utils/metadataUtils.js.map +1 -0
- package/lib/utils/navbarUtils.d.ts +21 -0
- package/lib/utils/navbarUtils.d.ts.map +1 -0
- package/lib/utils/navbarUtils.js +35 -0
- package/lib/utils/navbarUtils.js.map +1 -0
- package/lib/utils/reactUtils.d.ts +60 -0
- package/lib/utils/reactUtils.d.ts.map +1 -0
- package/lib/utils/reactUtils.js +91 -0
- package/lib/utils/reactUtils.js.map +1 -0
- package/lib/utils/regexpUtils.d.ts +12 -0
- package/lib/utils/regexpUtils.d.ts.map +1 -0
- package/lib/utils/regexpUtils.js +18 -0
- package/lib/utils/regexpUtils.js.map +1 -0
- package/lib/utils/routesUtils.d.ts +26 -0
- package/lib/utils/routesUtils.d.ts.map +1 -0
- package/lib/utils/routesUtils.js +54 -0
- package/lib/utils/routesUtils.js.map +1 -0
- package/lib/utils/scrollUtils.d.ts +83 -0
- package/lib/utils/scrollUtils.d.ts.map +1 -0
- package/lib/utils/scrollUtils.js +201 -0
- package/lib/utils/scrollUtils.js.map +1 -0
- package/lib/utils/searchUtils.d.ts +8 -0
- package/lib/utils/searchUtils.d.ts.map +1 -0
- package/lib/utils/searchUtils.js +8 -0
- package/lib/utils/searchUtils.js.map +1 -0
- package/lib/utils/skipToContentUtils.d.ts +20 -0
- package/lib/utils/skipToContentUtils.d.ts.map +1 -0
- package/lib/utils/skipToContentUtils.js +75 -0
- package/lib/utils/skipToContentUtils.js.map +1 -0
- package/lib/utils/storageUtils.d.ts +36 -0
- package/lib/utils/storageUtils.d.ts.map +1 -0
- package/lib/utils/storageUtils.js +193 -0
- package/lib/utils/storageUtils.js.map +1 -0
- package/lib/utils/tabsUtils.d.ts +55 -0
- package/lib/utils/tabsUtils.d.ts.map +1 -0
- package/lib/utils/tabsUtils.js +179 -0
- package/lib/utils/tabsUtils.js.map +1 -0
- package/lib/utils/tagsUtils.d.ts +20 -0
- package/lib/utils/tagsUtils.d.ts.map +1 -0
- package/lib/utils/tagsUtils.js +41 -0
- package/lib/utils/tagsUtils.js.map +1 -0
- package/lib/utils/titleFormatterUtils.d.ts +59 -0
- package/lib/utils/titleFormatterUtils.d.ts.map +1 -0
- package/lib/utils/titleFormatterUtils.js +49 -0
- package/lib/utils/titleFormatterUtils.js.map +1 -0
- package/lib/utils/tocUtils.d.ts +36 -0
- package/lib/utils/tocUtils.d.ts.map +1 -0
- package/lib/utils/tocUtils.js +84 -0
- package/lib/utils/tocUtils.js.map +1 -0
- package/lib/utils/useAlternatePageUtils.d.ts +32 -0
- package/lib/utils/useAlternatePageUtils.d.ts.map +1 -0
- package/lib/utils/useAlternatePageUtils.js +42 -0
- package/lib/utils/useAlternatePageUtils.js.map +1 -0
- package/lib/utils/useLocalPathname.d.ts +13 -0
- package/lib/utils/useLocalPathname.d.ts.map +1 -0
- package/lib/utils/useLocalPathname.js +19 -0
- package/lib/utils/useLocalPathname.js.map +1 -0
- package/lib/utils/useLocationChange.d.ts +17 -0
- package/lib/utils/useLocationChange.d.ts.map +1 -0
- package/lib/utils/useLocationChange.js +31 -0
- package/lib/utils/useLocationChange.js.map +1 -0
- package/lib/utils/usePluralForm.d.ts +21 -0
- package/lib/utils/usePluralForm.d.ts.map +1 -0
- package/lib/utils/usePluralForm.js +93 -0
- package/lib/utils/usePluralForm.js.map +1 -0
- package/lib/utils/useThemeConfig.d.ts +120 -0
- package/lib/utils/useThemeConfig.d.ts.map +1 -0
- package/lib/utils/useThemeConfig.js +14 -0
- package/lib/utils/useThemeConfig.js.map +1 -0
- package/package.json +58 -4
- package/src/components/Collapsible/index.tsx +250 -0
- package/src/components/Details/index.tsx +130 -0
- package/src/components/Details/styles.module.css +66 -0
- package/src/components/ThemedComponent/index.tsx +75 -0
- package/src/components/ThemedComponent/styles.module.css +26 -0
- package/src/contexts/announcementBar.tsx +117 -0
- package/src/contexts/colorMode.tsx +257 -0
- package/src/contexts/navbarMobileSidebar.tsx +119 -0
- package/src/contexts/navbarSecondaryMenu/content.tsx +100 -0
- package/src/contexts/navbarSecondaryMenu/display.tsx +102 -0
- package/src/hooks/useBackToTopButton.ts +73 -0
- package/src/hooks/useCodeWordWrap.ts +107 -0
- package/src/hooks/useHideableNavbar.ts +81 -0
- package/src/hooks/useLockBodyScroll.ts +21 -0
- package/src/hooks/useMutationObserver.ts +38 -0
- package/src/hooks/usePrismTheme.ts +24 -0
- package/src/hooks/useTOCHighlight.ts +189 -0
- package/src/hooks/useWindowSize.ts +67 -0
- package/src/index.ts +112 -0
- package/src/internal.ts +107 -0
- package/src/translations/blogTranslations.tsx +89 -0
- package/src/translations/contentVisibilityTranslations.tsx +51 -0
- package/src/translations/docsTranslations.tsx +28 -0
- package/src/types.d.ts +8 -0
- package/src/utils/IntlUtils.ts +27 -0
- package/src/utils/ThemeClassNames.ts +119 -0
- package/src/utils/accessibilityUtils.ts +10 -0
- package/src/utils/admonitionUtils.tsx +44 -0
- package/src/utils/anchorUtils.module.css +14 -0
- package/src/utils/anchorUtils.ts +31 -0
- package/src/utils/codeBlockUtils.tsx +494 -0
- package/src/utils/emojiUtils.ts +40 -0
- package/src/utils/errorBoundaryUtils.module.css +16 -0
- package/src/utils/errorBoundaryUtils.tsx +71 -0
- package/src/utils/footerUtils.ts +18 -0
- package/src/utils/historyUtils.ts +199 -0
- package/src/utils/jsUtils.ts +54 -0
- package/src/utils/metadataUtils.tsx +145 -0
- package/src/utils/navbarUtils.tsx +45 -0
- package/src/utils/reactUtils.tsx +120 -0
- package/src/utils/regexpUtils.ts +24 -0
- package/src/utils/routesUtils.ts +75 -0
- package/src/utils/scrollUtils.tsx +303 -0
- package/src/utils/searchUtils.ts +8 -0
- package/src/utils/skipToContentUtils.tsx +108 -0
- package/src/utils/storageUtils.ts +260 -0
- package/src/utils/tabsUtils.tsx +307 -0
- package/src/utils/tagsUtils.tsx +61 -0
- package/src/utils/titleFormatterUtils.tsx +120 -0
- package/src/utils/tocUtils.ts +119 -0
- package/src/utils/useAlternatePageUtils.ts +80 -0
- package/src/utils/useLocalPathname.ts +22 -0
- package/src/utils/useLocationChange.ts +41 -0
- package/src/utils/usePluralForm.ts +131 -0
- package/src/utils/useThemeConfig.ts +147 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skipToContentUtils.js","sourceRoot":"","sources":["../../src/utils/skipToContentUtils.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAC,WAAW,EAAE,MAAM,EAAsC,MAAM,OAAO,CAAC;AAC/E,OAAO,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,qCAAqC,CAAC;AAE7E;;GAEG;AACH,SAAS,sBAAsB;IAC7B,OAAO;IACL,sCAAsC;IACtC,6CAA6C;IAC7C,iFAAiF;IACjF,QAAQ,CAAC,aAAa,CAAC,oBAAoB,CAAC;QAC5C,uEAAuE;QACvE,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,CACjD,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAe;IACxC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAClC,EAAE,CAAC,KAAK,EAAE,CAAC;IACX,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;AACjC,CAAC;AAED,4DAA4D;AAC5D,SAAS,gBAAgB;IAavB,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAClD,MAAM,EAAC,MAAM,EAAC,GAAG,UAAU,EAAE,CAAC;IAE9B,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAsC,EAAE,EAAE;QACrE,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,MAAM,aAAa,GAAG,sBAAsB,EAAE,CAAC;QAC/C,IAAI,aAAa,EAAE,CAAC;YAClB,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,iCAAiC;IACjC,+EAA+E;IAC/E,iBAAiB,CAAC,CAAC,EAAC,QAAQ,EAAC,EAAE,EAAE;QAC/B,IAAI,YAAY,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YAChE,iBAAiB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAC,YAAY,EAAE,OAAO,EAAC,CAAC;AACjC,CAAC;AAED,MAAM,yBAAyB,GAAG,SAAS,CAAC;IAC1C,EAAE,EAAE,gCAAgC;IACpC,WAAW,EACT,mIAAmI;IACrI,OAAO,EAAE,sBAAsB;CAChC,CAAC,CAAC;AAIH,MAAM,UAAU,iBAAiB,CAAC,KAA6B;IAC7D,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,IAAI,yBAAyB,CAAC;IAC9D,MAAM,EAAC,YAAY,EAAE,OAAO,EAAC,GAAG,gBAAgB,EAAE,CAAC;IACnD,OAAO,CACL,CAAC,GAAG,CACF,GAAG,CAAC,CAAC,YAAY,CAAC,CAClB,IAAI,CAAC,QAAQ,CACb,UAAU,CAAC,CAAC,yBAAyB,CAAC,CACtC;MAAA,CAAC,wDAAwD,CACzD;MAAA,CAAC,CAAC,CACA,IAAI,KAAK,CAAC;IACV,sDAAsD;IACtD,qGAAqG;IACrG,IAAI,CAAC,CAAC,IAAI,uBAAuB,EAAE,CAAC,CACpC,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB;QAAA,CAAC,SAAS,CACZ;MAAA,EAAE,CAAC,CACL;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
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
|
+
import SiteStorage from '@generated/site-storage';
|
|
8
|
+
export type StorageType = (typeof SiteStorage)['type'] | 'none';
|
|
9
|
+
export type StorageSlot = {
|
|
10
|
+
get: () => string | null;
|
|
11
|
+
set: (value: string) => void;
|
|
12
|
+
del: () => void;
|
|
13
|
+
listen: (onChange: (event: StorageEvent) => void) => () => void;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Creates an interface to work on a particular key in the storage model.
|
|
17
|
+
* Note that this function only initializes the interface, but doesn't allocate
|
|
18
|
+
* anything by itself (i.e. no side-effects).
|
|
19
|
+
*
|
|
20
|
+
* The API is fail-safe, since usage of browser storage should be considered
|
|
21
|
+
* unreliable. Local storage might simply be unavailable (iframe + browser
|
|
22
|
+
* security) or operations might fail individually. Please assume that using
|
|
23
|
+
* this API can be a no-op. See also https://github.com/facebook/docusaurus/issues/6036
|
|
24
|
+
*/
|
|
25
|
+
export declare function createStorageSlot(keyInput: string, options?: {
|
|
26
|
+
persistence?: StorageType;
|
|
27
|
+
}): StorageSlot;
|
|
28
|
+
export declare function useStorageSlot(key: string | null, options?: {
|
|
29
|
+
persistence?: StorageType;
|
|
30
|
+
}): [string | null, StorageSlot];
|
|
31
|
+
/**
|
|
32
|
+
* Returns a list of all the keys currently stored in browser storage,
|
|
33
|
+
* or an empty list if browser storage can't be accessed.
|
|
34
|
+
*/
|
|
35
|
+
export declare function listStorageKeys(storageType?: StorageType): string[];
|
|
36
|
+
//# sourceMappingURL=storageUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storageUtils.d.ts","sourceRoot":"","sources":["../../src/utils/storageUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAElD,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAwFhE,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACzB,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;CACjE,CAAC;AAyBF;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAC,WAAW,CAAC,EAAE,WAAW,CAAA;CAAC,GACpC,WAAW,CA8Db;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,OAAO,CAAC,EAAE;IAAC,WAAW,CAAC,EAAE,WAAW,CAAA;CAAC,GACpC,CAAC,MAAM,GAAG,IAAI,EAAE,WAAW,CAAC,CA6B9B;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,WAAW,GAAE,WAAgC,GAC5C,MAAM,EAAE,CAcV"}
|
|
@@ -0,0 +1,193 @@
|
|
|
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
|
+
import { useCallback, useState, useSyncExternalStore } from 'react';
|
|
8
|
+
import SiteStorage from '@generated/site-storage';
|
|
9
|
+
const DefaultStorageType = SiteStorage.type;
|
|
10
|
+
function applyNamespace(storageKey) {
|
|
11
|
+
return `${storageKey}${SiteStorage.namespace}`;
|
|
12
|
+
}
|
|
13
|
+
// window.addEventListener('storage') only works for different windows...
|
|
14
|
+
// so for current window we have to dispatch the event manually
|
|
15
|
+
// Now we can listen for both cross-window / current-window storage changes!
|
|
16
|
+
// see https://stackoverflow.com/a/71177640/82609
|
|
17
|
+
// see https://stackoverflow.com/questions/26974084/listen-for-changes-with-localstorage-on-the-same-window
|
|
18
|
+
function dispatchChangeEvent({ key, oldValue, newValue, storage, }) {
|
|
19
|
+
// If we set multiple times the same storage value, events should not be fired
|
|
20
|
+
// The native events behave this way, so our manual event dispatch should
|
|
21
|
+
// rather behave exactly the same. Not doing so might create infinite loops.
|
|
22
|
+
// See https://github.com/facebook/docusaurus/issues/8594
|
|
23
|
+
if (oldValue === newValue) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const event = document.createEvent('StorageEvent');
|
|
27
|
+
event.initStorageEvent('storage', false, false, key, oldValue, newValue, window.location.href, storage);
|
|
28
|
+
window.dispatchEvent(event);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Will return `null` if browser storage is unavailable (like running Docusaurus
|
|
32
|
+
* in an iframe). This should NOT be called in SSR.
|
|
33
|
+
*
|
|
34
|
+
* @see https://github.com/facebook/docusaurus/pull/4501
|
|
35
|
+
*/
|
|
36
|
+
function getBrowserStorage(storageType = DefaultStorageType) {
|
|
37
|
+
if (typeof window === 'undefined') {
|
|
38
|
+
throw new Error('Browser storage is not available on Node.js/Docusaurus SSR process.');
|
|
39
|
+
}
|
|
40
|
+
if (storageType === 'none') {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
return window[storageType];
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
logOnceBrowserStorageNotAvailableWarning(err);
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
let hasLoggedBrowserStorageNotAvailableWarning = false;
|
|
52
|
+
/**
|
|
53
|
+
* Poor man's memoization to avoid logging multiple times the same warning.
|
|
54
|
+
* Sometimes, `localStorage`/`sessionStorage` is unavailable due to browser
|
|
55
|
+
* policies.
|
|
56
|
+
*/
|
|
57
|
+
function logOnceBrowserStorageNotAvailableWarning(error) {
|
|
58
|
+
if (!hasLoggedBrowserStorageNotAvailableWarning) {
|
|
59
|
+
console.warn(`Docusaurus browser storage is not available.
|
|
60
|
+
Possible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.`, error);
|
|
61
|
+
hasLoggedBrowserStorageNotAvailableWarning = true;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const NoopStorageSlot = {
|
|
65
|
+
get: () => null,
|
|
66
|
+
set: () => { },
|
|
67
|
+
del: () => { },
|
|
68
|
+
listen: () => () => { },
|
|
69
|
+
};
|
|
70
|
+
// Fail-fast, as storage APIs should not be used during the SSR process
|
|
71
|
+
function createServerStorageSlot(key) {
|
|
72
|
+
function throwError() {
|
|
73
|
+
throw new Error(`Illegal storage API usage for storage key "${key}".
|
|
74
|
+
Docusaurus storage APIs are not supposed to be called on the server-rendering process.
|
|
75
|
+
Please only call storage APIs in effects and event handlers.`);
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
get: throwError,
|
|
79
|
+
set: throwError,
|
|
80
|
+
del: throwError,
|
|
81
|
+
listen: throwError,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Creates an interface to work on a particular key in the storage model.
|
|
86
|
+
* Note that this function only initializes the interface, but doesn't allocate
|
|
87
|
+
* anything by itself (i.e. no side-effects).
|
|
88
|
+
*
|
|
89
|
+
* The API is fail-safe, since usage of browser storage should be considered
|
|
90
|
+
* unreliable. Local storage might simply be unavailable (iframe + browser
|
|
91
|
+
* security) or operations might fail individually. Please assume that using
|
|
92
|
+
* this API can be a no-op. See also https://github.com/facebook/docusaurus/issues/6036
|
|
93
|
+
*/
|
|
94
|
+
export function createStorageSlot(keyInput, options) {
|
|
95
|
+
const key = applyNamespace(keyInput);
|
|
96
|
+
if (typeof window === 'undefined') {
|
|
97
|
+
return createServerStorageSlot(key);
|
|
98
|
+
}
|
|
99
|
+
const storage = getBrowserStorage(options?.persistence);
|
|
100
|
+
if (storage === null) {
|
|
101
|
+
return NoopStorageSlot;
|
|
102
|
+
}
|
|
103
|
+
return {
|
|
104
|
+
get: () => {
|
|
105
|
+
try {
|
|
106
|
+
return storage.getItem(key);
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
console.error(`Docusaurus storage error, can't get key=${key}`, err);
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
set: (newValue) => {
|
|
114
|
+
try {
|
|
115
|
+
const oldValue = storage.getItem(key);
|
|
116
|
+
storage.setItem(key, newValue);
|
|
117
|
+
dispatchChangeEvent({
|
|
118
|
+
key,
|
|
119
|
+
oldValue,
|
|
120
|
+
newValue,
|
|
121
|
+
storage,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
console.error(`Docusaurus storage error, can't set ${key}=${newValue}`, err);
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
del: () => {
|
|
129
|
+
try {
|
|
130
|
+
const oldValue = storage.getItem(key);
|
|
131
|
+
storage.removeItem(key);
|
|
132
|
+
dispatchChangeEvent({ key, oldValue, newValue: null, storage });
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
console.error(`Docusaurus storage error, can't delete key=${key}`, err);
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
listen: (onChange) => {
|
|
139
|
+
try {
|
|
140
|
+
const listener = (event) => {
|
|
141
|
+
if (event.storageArea === storage && event.key === key) {
|
|
142
|
+
onChange(event);
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
window.addEventListener('storage', listener);
|
|
146
|
+
return () => window.removeEventListener('storage', listener);
|
|
147
|
+
}
|
|
148
|
+
catch (err) {
|
|
149
|
+
console.error(`Docusaurus storage error, can't listen for changes of key=${key}`, err);
|
|
150
|
+
return () => { };
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
export function useStorageSlot(key, options) {
|
|
156
|
+
// Not ideal but good enough: assumes storage slot config is constant
|
|
157
|
+
const [storageSlot] = useState(() => {
|
|
158
|
+
if (key === null) {
|
|
159
|
+
return NoopStorageSlot;
|
|
160
|
+
}
|
|
161
|
+
return createStorageSlot(key, options);
|
|
162
|
+
});
|
|
163
|
+
const listen = useCallback((onChange) => {
|
|
164
|
+
// Do not try to add a listener during SSR
|
|
165
|
+
if (typeof window === 'undefined') {
|
|
166
|
+
return () => { };
|
|
167
|
+
}
|
|
168
|
+
return storageSlot.listen(onChange);
|
|
169
|
+
}, [storageSlot]);
|
|
170
|
+
const currentValue = useSyncExternalStore(listen, () => {
|
|
171
|
+
return storageSlot.get();
|
|
172
|
+
}, () => null);
|
|
173
|
+
return [currentValue, storageSlot];
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Returns a list of all the keys currently stored in browser storage,
|
|
177
|
+
* or an empty list if browser storage can't be accessed.
|
|
178
|
+
*/
|
|
179
|
+
export function listStorageKeys(storageType = DefaultStorageType) {
|
|
180
|
+
const browserStorage = getBrowserStorage(storageType);
|
|
181
|
+
if (!browserStorage) {
|
|
182
|
+
return [];
|
|
183
|
+
}
|
|
184
|
+
const keys = [];
|
|
185
|
+
for (let i = 0; i < browserStorage.length; i += 1) {
|
|
186
|
+
const key = browserStorage.key(i);
|
|
187
|
+
if (key !== null) {
|
|
188
|
+
keys.push(key);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return keys;
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=storageUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storageUtils.js","sourceRoot":"","sources":["../../src/utils/storageUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
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
|
+
import { type ReactNode } from 'react';
|
|
8
|
+
/**
|
|
9
|
+
* TabValue is the "config" of a given Tab
|
|
10
|
+
* Provided through <Tabs> "values" prop or through the children <TabItem> props
|
|
11
|
+
*/
|
|
12
|
+
export interface TabValue {
|
|
13
|
+
readonly value: string;
|
|
14
|
+
readonly label?: string;
|
|
15
|
+
readonly attributes?: {
|
|
16
|
+
[key: string]: unknown;
|
|
17
|
+
};
|
|
18
|
+
readonly default?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface TabsProps {
|
|
21
|
+
readonly lazy?: boolean;
|
|
22
|
+
readonly block?: boolean;
|
|
23
|
+
readonly children: ReactNode;
|
|
24
|
+
readonly defaultValue?: string | null;
|
|
25
|
+
readonly values?: readonly TabValue[];
|
|
26
|
+
readonly groupId?: string;
|
|
27
|
+
readonly className?: string;
|
|
28
|
+
readonly queryString?: string | boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface TabItemProps {
|
|
31
|
+
readonly children: ReactNode;
|
|
32
|
+
readonly value: string;
|
|
33
|
+
readonly default?: boolean;
|
|
34
|
+
readonly label?: string;
|
|
35
|
+
readonly className?: string;
|
|
36
|
+
readonly attributes?: {
|
|
37
|
+
[key: string]: unknown;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export declare function sanitizeTabsChildren(children: ReactNode): ReactNode;
|
|
41
|
+
type TabsContextValue = {
|
|
42
|
+
selectedValue: string;
|
|
43
|
+
selectValue: (value: string) => void;
|
|
44
|
+
tabValues: readonly TabValue[];
|
|
45
|
+
lazy: boolean;
|
|
46
|
+
block: boolean;
|
|
47
|
+
};
|
|
48
|
+
export declare function useTabsContextValue(props: TabsProps): TabsContextValue;
|
|
49
|
+
export declare function useTabs(): TabsContextValue;
|
|
50
|
+
export declare function TabsProvider(props: {
|
|
51
|
+
children: ReactNode;
|
|
52
|
+
value: TabsContextValue;
|
|
53
|
+
}): ReactNode;
|
|
54
|
+
export {};
|
|
55
|
+
//# sourceMappingURL=tabsUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabsUtils.d.ts","sourceRoot":"","sources":["../../src/utils/tabsUtils.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAc,EAOZ,KAAK,SAAS,EAEf,MAAM,OAAO,CAAC;AAKf;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,CAAC;IAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACzC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,CAAC;CAChD;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,SAAS,GAAG,SAAS,CAEnE;AA4KD,KAAK,gBAAgB,GAAG;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC/B,IAAI,EAAE,OAAO,CAAC;IAId,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,GAAG,gBAAgB,CAoDtE;AAID,wBAAgB,OAAO,IAAI,gBAAgB,CAM1C;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAClC,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,gBAAgB,CAAC;CACzB,GAAG,SAAS,CAEZ"}
|
|
@@ -0,0 +1,179 @@
|
|
|
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
|
+
import React, { isValidElement, useCallback, useLayoutEffect, useState, useMemo, createContext, } from 'react';
|
|
8
|
+
import { useHistory } from '@docusaurus/router';
|
|
9
|
+
import { useQueryStringValue } from '@docusaurus/theme-common/internal';
|
|
10
|
+
import { duplicates, useStorageSlot } from '../index';
|
|
11
|
+
export function sanitizeTabsChildren(children) {
|
|
12
|
+
return React.Children.toArray(children).filter((child) => child !== '\n');
|
|
13
|
+
}
|
|
14
|
+
function extractChildrenTabValues(children) {
|
|
15
|
+
// ✅ <TabItem value="red"/> => true
|
|
16
|
+
// ✅ <CustomTabItem value="red"/> => true
|
|
17
|
+
// ❌ <RedTabItem value="tab-value"/> => requires <Tabs values> prop
|
|
18
|
+
function isTabItemWithValueProp(comp) {
|
|
19
|
+
const { props } = comp;
|
|
20
|
+
return !!props && typeof props === 'object' && 'value' in props;
|
|
21
|
+
}
|
|
22
|
+
const elements = React.Children.toArray(children).flatMap((child) => {
|
|
23
|
+
// Historical case, not sure when it happens, do we really need this?
|
|
24
|
+
if (!child) {
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
if (isValidElement(child) && isTabItemWithValueProp(child)) {
|
|
28
|
+
return [child];
|
|
29
|
+
}
|
|
30
|
+
// child.type.name will give non-sensical values in prod because of
|
|
31
|
+
// minification, but we assume it won't throw in prod.
|
|
32
|
+
const badChildTypeName =
|
|
33
|
+
// @ts-expect-error: guarding against unexpected cases
|
|
34
|
+
typeof child.type === 'string' ? child.type : child.type.name;
|
|
35
|
+
throw new Error(`Docusaurus error: Bad <Tabs> child <${badChildTypeName}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.
|
|
36
|
+
If you do not want to pass on a "value" prop to the direct children of <Tabs>, you can also pass an explicit <Tabs values={...}> prop.`);
|
|
37
|
+
});
|
|
38
|
+
return elements.map(({ props: { value, label, attributes, default: isDefault } }) => ({
|
|
39
|
+
value,
|
|
40
|
+
label,
|
|
41
|
+
attributes,
|
|
42
|
+
default: isDefault,
|
|
43
|
+
}));
|
|
44
|
+
}
|
|
45
|
+
function ensureNoDuplicateValue(values) {
|
|
46
|
+
const dup = duplicates(values, (a, b) => a.value === b.value);
|
|
47
|
+
if (dup.length > 0) {
|
|
48
|
+
throw new Error(`Docusaurus error: Duplicate values "${dup
|
|
49
|
+
.map((a) => `'${a.value}'`)
|
|
50
|
+
.join(', ')}" found in <Tabs>. Every value needs to be unique.`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function useTabValues(props) {
|
|
54
|
+
const { values: valuesProp, children } = props;
|
|
55
|
+
return useMemo(() => {
|
|
56
|
+
const values = valuesProp ?? extractChildrenTabValues(children);
|
|
57
|
+
ensureNoDuplicateValue(values);
|
|
58
|
+
return values;
|
|
59
|
+
}, [valuesProp, children]);
|
|
60
|
+
}
|
|
61
|
+
function isValidValue({ value, tabValues, }) {
|
|
62
|
+
return tabValues.some((a) => a.value === value);
|
|
63
|
+
}
|
|
64
|
+
function getInitialStateValue({ defaultValue, tabValues, }) {
|
|
65
|
+
if (tabValues.length === 0) {
|
|
66
|
+
throw new Error('Docusaurus error: the <Tabs> component requires at least one <TabItem> children component');
|
|
67
|
+
}
|
|
68
|
+
if (defaultValue) {
|
|
69
|
+
// Warn user about passing incorrect defaultValue as prop.
|
|
70
|
+
if (!isValidValue({ value: defaultValue, tabValues })) {
|
|
71
|
+
throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${defaultValue}" but none of its children has the corresponding value. Available values are: ${tabValues
|
|
72
|
+
.map((a) => a.value)
|
|
73
|
+
.join(', ')}. If you intend to show no default tab, use defaultValue={null} instead.`);
|
|
74
|
+
}
|
|
75
|
+
return defaultValue;
|
|
76
|
+
}
|
|
77
|
+
const defaultTabValue = tabValues.find((tabValue) => tabValue.default) ?? tabValues[0];
|
|
78
|
+
if (!defaultTabValue) {
|
|
79
|
+
throw new Error('Unexpected error: 0 tabValues');
|
|
80
|
+
}
|
|
81
|
+
return defaultTabValue.value;
|
|
82
|
+
}
|
|
83
|
+
function getStorageKey(groupId) {
|
|
84
|
+
if (!groupId) {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
return `docusaurus.tab.${groupId}`;
|
|
88
|
+
}
|
|
89
|
+
function getQueryStringKey({ queryString = false, groupId, }) {
|
|
90
|
+
if (typeof queryString === 'string') {
|
|
91
|
+
return queryString;
|
|
92
|
+
}
|
|
93
|
+
if (queryString === false) {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
if (queryString === true && !groupId) {
|
|
97
|
+
throw new Error(`Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".`);
|
|
98
|
+
}
|
|
99
|
+
return groupId ?? null;
|
|
100
|
+
}
|
|
101
|
+
function useTabQueryString({ queryString = false, groupId, }) {
|
|
102
|
+
const history = useHistory();
|
|
103
|
+
const key = getQueryStringKey({ queryString, groupId });
|
|
104
|
+
const value = useQueryStringValue(key);
|
|
105
|
+
const setValue = useCallback((newValue) => {
|
|
106
|
+
if (!key) {
|
|
107
|
+
return; // no-op
|
|
108
|
+
}
|
|
109
|
+
const searchParams = new URLSearchParams(history.location.search);
|
|
110
|
+
searchParams.set(key, newValue);
|
|
111
|
+
history.replace({ ...history.location, search: searchParams.toString() });
|
|
112
|
+
}, [key, history]);
|
|
113
|
+
return [value, setValue];
|
|
114
|
+
}
|
|
115
|
+
function useTabStorage({ groupId }) {
|
|
116
|
+
const key = getStorageKey(groupId);
|
|
117
|
+
const [value, storageSlot] = useStorageSlot(key);
|
|
118
|
+
const setValue = useCallback((newValue) => {
|
|
119
|
+
if (!key) {
|
|
120
|
+
return; // no-op
|
|
121
|
+
}
|
|
122
|
+
storageSlot.set(newValue);
|
|
123
|
+
}, [key, storageSlot]);
|
|
124
|
+
return [value, setValue];
|
|
125
|
+
}
|
|
126
|
+
export function useTabsContextValue(props) {
|
|
127
|
+
const { defaultValue, queryString = false, groupId } = props;
|
|
128
|
+
const tabValues = useTabValues(props);
|
|
129
|
+
const [selectedValue, setSelectedValue] = useState(() => getInitialStateValue({ defaultValue, tabValues }));
|
|
130
|
+
const [queryStringValue, setQueryString] = useTabQueryString({
|
|
131
|
+
queryString,
|
|
132
|
+
groupId,
|
|
133
|
+
});
|
|
134
|
+
const [storageValue, setStorageValue] = useTabStorage({
|
|
135
|
+
groupId,
|
|
136
|
+
});
|
|
137
|
+
// We sync valid querystring/storage value to state on change + hydration
|
|
138
|
+
const valueToSync = (() => {
|
|
139
|
+
const value = queryStringValue ?? storageValue;
|
|
140
|
+
if (!isValidValue({ value, tabValues })) {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
return value;
|
|
144
|
+
})();
|
|
145
|
+
// Sync in a layout/sync effect is important, for useScrollPositionBlocker
|
|
146
|
+
// See https://github.com/facebook/docusaurus/issues/8625
|
|
147
|
+
useLayoutEffect(() => {
|
|
148
|
+
if (valueToSync) {
|
|
149
|
+
setSelectedValue(valueToSync);
|
|
150
|
+
}
|
|
151
|
+
}, [valueToSync]);
|
|
152
|
+
const selectValue = useCallback((newValue) => {
|
|
153
|
+
if (!isValidValue({ value: newValue, tabValues })) {
|
|
154
|
+
throw new Error(`Can't select invalid tab value=${newValue}`);
|
|
155
|
+
}
|
|
156
|
+
setSelectedValue(newValue);
|
|
157
|
+
setQueryString(newValue);
|
|
158
|
+
setStorageValue(newValue);
|
|
159
|
+
}, [setQueryString, setStorageValue, tabValues]);
|
|
160
|
+
return {
|
|
161
|
+
selectedValue,
|
|
162
|
+
selectValue,
|
|
163
|
+
tabValues,
|
|
164
|
+
lazy: props.lazy ?? false,
|
|
165
|
+
block: props.block ?? false,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
const TabsContext = createContext(null);
|
|
169
|
+
export function useTabs() {
|
|
170
|
+
const contextValue = React.useContext(TabsContext);
|
|
171
|
+
if (!contextValue) {
|
|
172
|
+
throw new Error('useTabsContext() must be used within a Tabs component');
|
|
173
|
+
}
|
|
174
|
+
return contextValue;
|
|
175
|
+
}
|
|
176
|
+
export function TabsProvider(props) {
|
|
177
|
+
return <TabsContext value={props.value}>{props.children}</TabsContext>;
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=tabsUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabsUtils.js","sourceRoot":"","sources":["../../src/utils/tabsUtils.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
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
|
+
import type { ReactNode } from 'react';
|
|
8
|
+
import type { TagsListItem } from '@docusaurus/utils';
|
|
9
|
+
export declare const translateTagsPageTitle: () => string;
|
|
10
|
+
export declare function TagsPageLinkLabel(): ReactNode;
|
|
11
|
+
export type TagLetterEntry = {
|
|
12
|
+
letter: string;
|
|
13
|
+
tags: TagsListItem[];
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Takes a list of tags (as provided by the content plugins), and groups them by
|
|
17
|
+
* their initials.
|
|
18
|
+
*/
|
|
19
|
+
export declare function listTagsByLetters(tags: readonly TagsListItem[]): TagLetterEntry[];
|
|
20
|
+
//# sourceMappingURL=tagsUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tagsUtils.d.ts","sourceRoot":"","sources":["../../src/utils/tagsUtils.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAErC,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAEpD,eAAO,MAAM,sBAAsB,QAAO,MAKtC,CAAC;AAEL,wBAAgB,iBAAiB,IAAI,SAAS,CAQ7C;AAED,MAAM,MAAM,cAAc,GAAG;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,YAAY,EAAE,CAAA;CAAC,CAAC;AAMpE;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,SAAS,YAAY,EAAE,GAC5B,cAAc,EAAE,CAoBlB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
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
|
+
import Translate, { translate } from '@docusaurus/Translate';
|
|
8
|
+
export const translateTagsPageTitle = () => translate({
|
|
9
|
+
id: 'theme.tags.tagsPageTitle',
|
|
10
|
+
message: 'Tags',
|
|
11
|
+
description: 'The title of the tag list page',
|
|
12
|
+
});
|
|
13
|
+
export function TagsPageLinkLabel() {
|
|
14
|
+
return (<Translate id="theme.tags.tagsPageLink" description="The label of the link targeting the tag list page">
|
|
15
|
+
View all tags
|
|
16
|
+
</Translate>);
|
|
17
|
+
}
|
|
18
|
+
function getTagLetter(tag) {
|
|
19
|
+
return tag[0].toUpperCase();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Takes a list of tags (as provided by the content plugins), and groups them by
|
|
23
|
+
* their initials.
|
|
24
|
+
*/
|
|
25
|
+
export function listTagsByLetters(tags) {
|
|
26
|
+
const groups = {};
|
|
27
|
+
Object.values(tags).forEach((tag) => {
|
|
28
|
+
const initial = getTagLetter(tag.label);
|
|
29
|
+
groups[initial] ??= [];
|
|
30
|
+
groups[initial].push(tag);
|
|
31
|
+
});
|
|
32
|
+
return (Object.entries(groups)
|
|
33
|
+
// Sort letters
|
|
34
|
+
.sort(([letter1], [letter2]) => letter1.localeCompare(letter2))
|
|
35
|
+
.map(([letter, letterTags]) => {
|
|
36
|
+
// Sort tags inside a letter
|
|
37
|
+
const sortedTags = letterTags.sort((tag1, tag2) => tag1.label.localeCompare(tag2.label));
|
|
38
|
+
return { letter, tags: sortedTags };
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=tagsUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tagsUtils.js","sourceRoot":"","sources":["../../src/utils/tagsUtils.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,SAAS,EAAE,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAG3D,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAW,EAAE,CACjD,SAAS,CAAC;IACR,EAAE,EAAE,0BAA0B;IAC9B,OAAO,EAAE,MAAM;IACf,WAAW,EAAE,gCAAgC;CAC9C,CAAC,CAAC;AAEL,MAAM,UAAU,iBAAiB;IAC/B,OAAO,CACL,CAAC,SAAS,CACR,EAAE,CAAC,yBAAyB,CAC5B,WAAW,CAAC,mDAAmD,CAC/D;;IACF,EAAE,SAAS,CAAC,CACb,CAAC;AACJ,CAAC;AAID,SAAS,YAAY,CAAC,GAAW;IAC/B,OAAO,GAAG,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAA6B;IAE7B,MAAM,MAAM,GAAwC,EAAE,CAAC;IACvD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAClC,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,CAAC,OAAO,CAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QACpB,eAAe;SACd,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;SAC9D,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE;QAC5B,4BAA4B;QAC5B,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAChD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CACrC,CAAC;QACF,OAAO,EAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAC,CAAC;IACpC,CAAC,CAAC,CACL,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
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
|
+
import type { ReactNode } from 'react';
|
|
8
|
+
type TitleFormatterParams = {
|
|
9
|
+
/**
|
|
10
|
+
* The page title to format
|
|
11
|
+
* Usually provided with these APIs:
|
|
12
|
+
* - <PageMetadata title={title}>
|
|
13
|
+
* - useTitleFormatter().format(title)
|
|
14
|
+
*/
|
|
15
|
+
title: string;
|
|
16
|
+
/**
|
|
17
|
+
* The siteConfig.title value
|
|
18
|
+
*/
|
|
19
|
+
siteTitle: string;
|
|
20
|
+
/**
|
|
21
|
+
* The siteConfig.titleDelimiter value
|
|
22
|
+
*/
|
|
23
|
+
titleDelimiter: string;
|
|
24
|
+
/**
|
|
25
|
+
* The plugin that created the page you are on
|
|
26
|
+
*/
|
|
27
|
+
plugin: {
|
|
28
|
+
id: string;
|
|
29
|
+
name: string;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* This is the full formatting function, including all useful params
|
|
34
|
+
* Can be customized through React context with the provider
|
|
35
|
+
*/
|
|
36
|
+
export type TitleFormatterFn = (params: TitleFormatterParams) => string;
|
|
37
|
+
/**
|
|
38
|
+
* The default formatter is provided in params for convenience
|
|
39
|
+
*/
|
|
40
|
+
export type TitleFormatterFnWithDefault = (params: TitleFormatterParams & {
|
|
41
|
+
defaultFormatter: (params: TitleFormatterParams) => string;
|
|
42
|
+
}) => string;
|
|
43
|
+
export declare const TitleFormatterFnDefault: TitleFormatterFn;
|
|
44
|
+
/**
|
|
45
|
+
* This is the simpler API exposed to theme/users
|
|
46
|
+
*/
|
|
47
|
+
type TitleFormatter = {
|
|
48
|
+
format: (title: string) => string;
|
|
49
|
+
};
|
|
50
|
+
export declare function TitleFormatterProvider({ formatter, children, }: {
|
|
51
|
+
children: ReactNode;
|
|
52
|
+
formatter: TitleFormatterFnWithDefault;
|
|
53
|
+
}): ReactNode;
|
|
54
|
+
/**
|
|
55
|
+
* Returns a function to format the page title
|
|
56
|
+
*/
|
|
57
|
+
export declare function useTitleFormatter(): TitleFormatter;
|
|
58
|
+
export {};
|
|
59
|
+
//# sourceMappingURL=titleFormatterUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"titleFormatterUtils.d.ts","sourceRoot":"","sources":["../../src/utils/titleFormatterUtils.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAKrC,KAAK,oBAAoB,GAAG;IAC1B;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,MAAM,EAAE;QACN,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,oBAAoB,KAAK,MAAM,CAAC;AAExE;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG,CACxC,MAAM,EAAE,oBAAoB,GAAG;IAC7B,gBAAgB,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,MAAM,CAAC;CAC5D,KACE,MAAM,CAAC;AAEZ,eAAO,MAAM,uBAAuB,EAAE,gBAUrC,CAAC;AAEF;;GAEG;AACH,KAAK,cAAc,GAAG;IAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;CAAC,CAAC;AAM1D,wBAAgB,sBAAsB,CAAC,EACrC,SAAS,EACT,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,EAAE,2BAA2B,CAAC;CACxC,GAAG,SAAS,CAIZ;AAUD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,CAmBlD"}
|