@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.
Files changed (261) hide show
  1. package/README.md +2 -2
  2. package/lib/components/Collapsible/index.d.ts +59 -0
  3. package/lib/components/Collapsible/index.d.ts.map +1 -0
  4. package/lib/components/Collapsible/index.js +145 -0
  5. package/lib/components/Collapsible/index.js.map +1 -0
  6. package/lib/components/Details/index.d.ts +20 -0
  7. package/lib/components/Details/index.d.ts.map +1 -0
  8. package/lib/components/Details/index.js +86 -0
  9. package/lib/components/Details/index.js.map +1 -0
  10. package/lib/components/Details/styles.module.css +66 -0
  11. package/lib/components/ThemedComponent/index.d.ts +31 -0
  12. package/lib/components/ThemedComponent/index.d.ts.map +1 -0
  13. package/lib/components/ThemedComponent/index.js +47 -0
  14. package/lib/components/ThemedComponent/index.js.map +1 -0
  15. package/lib/components/ThemedComponent/styles.module.css +26 -0
  16. package/lib/contexts/announcementBar.d.ts +21 -0
  17. package/lib/contexts/announcementBar.d.ts.map +1 -0
  18. package/lib/contexts/announcementBar.js +72 -0
  19. package/lib/contexts/announcementBar.js.map +1 -0
  20. package/lib/contexts/colorMode.d.ts +23 -0
  21. package/lib/contexts/colorMode.d.ts.map +1 -0
  22. package/lib/contexts/colorMode.js +163 -0
  23. package/lib/contexts/colorMode.js.map +1 -0
  24. package/lib/contexts/navbarMobileSidebar.d.ts +31 -0
  25. package/lib/contexts/navbarMobileSidebar.d.ts.map +1 -0
  26. package/lib/contexts/navbarMobileSidebar.js +65 -0
  27. package/lib/contexts/navbarMobileSidebar.js.map +1 -0
  28. package/lib/contexts/navbarSecondaryMenu/content.d.ts +37 -0
  29. package/lib/contexts/navbarSecondaryMenu/content.d.ts.map +1 -0
  30. package/lib/contexts/navbarSecondaryMenu/content.js +50 -0
  31. package/lib/contexts/navbarSecondaryMenu/content.js.map +1 -0
  32. package/lib/contexts/navbarSecondaryMenu/display.d.ts +24 -0
  33. package/lib/contexts/navbarSecondaryMenu/display.d.ts.map +1 -0
  34. package/lib/contexts/navbarSecondaryMenu/display.js +62 -0
  35. package/lib/contexts/navbarSecondaryMenu/display.js.map +1 -0
  36. package/lib/hooks/useBackToTopButton.d.ts +27 -0
  37. package/lib/hooks/useBackToTopButton.d.ts.map +1 -0
  38. package/lib/hooks/useBackToTopButton.js +50 -0
  39. package/lib/hooks/useBackToTopButton.js.map +1 -0
  40. package/lib/hooks/useCodeWordWrap.d.ts +15 -0
  41. package/lib/hooks/useCodeWordWrap.d.ts.map +1 -0
  42. package/lib/hooks/useCodeWordWrap.js +67 -0
  43. package/lib/hooks/useCodeWordWrap.js.map +1 -0
  44. package/lib/hooks/useHideableNavbar.d.ts +17 -0
  45. package/lib/hooks/useHideableNavbar.d.ts.map +1 -0
  46. package/lib/hooks/useHideableNavbar.js +65 -0
  47. package/lib/hooks/useHideableNavbar.js.map +1 -0
  48. package/lib/hooks/useLockBodyScroll.d.ts +12 -0
  49. package/lib/hooks/useLockBodyScroll.d.ts.map +1 -0
  50. package/lib/hooks/useLockBodyScroll.js +20 -0
  51. package/lib/hooks/useLockBodyScroll.js.map +1 -0
  52. package/lib/hooks/useMutationObserver.d.ts +4 -0
  53. package/lib/hooks/useMutationObserver.d.ts.map +1 -0
  54. package/lib/hooks/useMutationObserver.js +29 -0
  55. package/lib/hooks/useMutationObserver.js.map +1 -0
  56. package/lib/hooks/usePrismTheme.d.ts +13 -0
  57. package/lib/hooks/usePrismTheme.d.ts.map +1 -0
  58. package/lib/hooks/usePrismTheme.js +21 -0
  59. package/lib/hooks/usePrismTheme.js.map +1 -0
  60. package/lib/hooks/useTOCHighlight.d.ts +25 -0
  61. package/lib/hooks/useTOCHighlight.d.ts.map +1 -0
  62. package/lib/hooks/useTOCHighlight.js +130 -0
  63. package/lib/hooks/useTOCHighlight.js.map +1 -0
  64. package/lib/hooks/useWindowSize.d.ts +27 -0
  65. package/lib/hooks/useWindowSize.d.ts.map +1 -0
  66. package/lib/hooks/useWindowSize.js +49 -0
  67. package/lib/hooks/useWindowSize.js.map +1 -0
  68. package/lib/index.d.ts +30 -0
  69. package/lib/index.d.ts.map +1 -0
  70. package/lib/index.js +37 -0
  71. package/lib/index.js.map +1 -0
  72. package/lib/internal.d.ts +35 -0
  73. package/lib/internal.d.ts.map +1 -0
  74. package/lib/internal.js +45 -0
  75. package/lib/internal.js.map +1 -0
  76. package/lib/translations/blogTranslations.d.ts +20 -0
  77. package/lib/translations/blogTranslations.d.ts.map +1 -0
  78. package/lib/translations/blogTranslations.js +52 -0
  79. package/lib/translations/blogTranslations.js.map +1 -0
  80. package/lib/translations/contentVisibilityTranslations.d.ts +12 -0
  81. package/lib/translations/contentVisibilityTranslations.d.ts.map +1 -0
  82. package/lib/translations/contentVisibilityTranslations.js +30 -0
  83. package/lib/translations/contentVisibilityTranslations.js.map +1 -0
  84. package/lib/translations/docsTranslations.d.ts +8 -0
  85. package/lib/translations/docsTranslations.d.ts.map +1 -0
  86. package/lib/translations/docsTranslations.js +17 -0
  87. package/lib/translations/docsTranslations.js.map +1 -0
  88. package/lib/utils/IntlUtils.d.ts +2 -0
  89. package/lib/utils/IntlUtils.d.ts.map +1 -0
  90. package/lib/utils/IntlUtils.js +20 -0
  91. package/lib/utils/IntlUtils.js.map +1 -0
  92. package/lib/utils/ThemeClassNames.d.ts +99 -0
  93. package/lib/utils/ThemeClassNames.d.ts.map +1 -0
  94. package/lib/utils/ThemeClassNames.js +107 -0
  95. package/lib/utils/ThemeClassNames.js.map +1 -0
  96. package/lib/utils/accessibilityUtils.d.ts +8 -0
  97. package/lib/utils/accessibilityUtils.d.ts.map +1 -0
  98. package/lib/utils/accessibilityUtils.js +10 -0
  99. package/lib/utils/accessibilityUtils.js.map +1 -0
  100. package/lib/utils/admonitionUtils.d.ts +12 -0
  101. package/lib/utils/admonitionUtils.d.ts.map +1 -0
  102. package/lib/utils/admonitionUtils.js +32 -0
  103. package/lib/utils/admonitionUtils.js.map +1 -0
  104. package/lib/utils/anchorUtils.d.ts +16 -0
  105. package/lib/utils/anchorUtils.d.ts.map +1 -0
  106. package/lib/utils/anchorUtils.js +26 -0
  107. package/lib/utils/anchorUtils.js.map +1 -0
  108. package/lib/utils/anchorUtils.module.css +14 -0
  109. package/lib/utils/codeBlockUtils.d.ts +101 -0
  110. package/lib/utils/codeBlockUtils.d.ts.map +1 -0
  111. package/lib/utils/codeBlockUtils.js +310 -0
  112. package/lib/utils/codeBlockUtils.js.map +1 -0
  113. package/lib/utils/emojiUtils.d.ts +20 -0
  114. package/lib/utils/emojiUtils.d.ts.map +1 -0
  115. package/lib/utils/emojiUtils.js +32 -0
  116. package/lib/utils/emojiUtils.js.map +1 -0
  117. package/lib/utils/errorBoundaryUtils.d.ts +31 -0
  118. package/lib/utils/errorBoundaryUtils.d.ts.map +1 -0
  119. package/lib/utils/errorBoundaryUtils.js +48 -0
  120. package/lib/utils/errorBoundaryUtils.js.map +1 -0
  121. package/lib/utils/errorBoundaryUtils.module.css +16 -0
  122. package/lib/utils/footerUtils.d.ts +13 -0
  123. package/lib/utils/footerUtils.d.ts.map +1 -0
  124. package/lib/utils/footerUtils.js +14 -0
  125. package/lib/utils/footerUtils.js.map +1 -0
  126. package/lib/utils/historyUtils.d.ts +39 -0
  127. package/lib/utils/historyUtils.d.ts.map +1 -0
  128. package/lib/utils/historyUtils.js +148 -0
  129. package/lib/utils/historyUtils.js.map +1 -0
  130. package/lib/utils/jsUtils.d.ts +24 -0
  131. package/lib/utils/jsUtils.d.ts.map +1 -0
  132. package/lib/utils/jsUtils.js +43 -0
  133. package/lib/utils/jsUtils.js.map +1 -0
  134. package/lib/utils/metadataUtils.d.ts +38 -0
  135. package/lib/utils/metadataUtils.d.ts.map +1 -0
  136. package/lib/utils/metadataUtils.js +87 -0
  137. package/lib/utils/metadataUtils.js.map +1 -0
  138. package/lib/utils/navbarUtils.d.ts +21 -0
  139. package/lib/utils/navbarUtils.d.ts.map +1 -0
  140. package/lib/utils/navbarUtils.js +35 -0
  141. package/lib/utils/navbarUtils.js.map +1 -0
  142. package/lib/utils/reactUtils.d.ts +60 -0
  143. package/lib/utils/reactUtils.d.ts.map +1 -0
  144. package/lib/utils/reactUtils.js +91 -0
  145. package/lib/utils/reactUtils.js.map +1 -0
  146. package/lib/utils/regexpUtils.d.ts +12 -0
  147. package/lib/utils/regexpUtils.d.ts.map +1 -0
  148. package/lib/utils/regexpUtils.js +18 -0
  149. package/lib/utils/regexpUtils.js.map +1 -0
  150. package/lib/utils/routesUtils.d.ts +26 -0
  151. package/lib/utils/routesUtils.d.ts.map +1 -0
  152. package/lib/utils/routesUtils.js +54 -0
  153. package/lib/utils/routesUtils.js.map +1 -0
  154. package/lib/utils/scrollUtils.d.ts +83 -0
  155. package/lib/utils/scrollUtils.d.ts.map +1 -0
  156. package/lib/utils/scrollUtils.js +201 -0
  157. package/lib/utils/scrollUtils.js.map +1 -0
  158. package/lib/utils/searchUtils.d.ts +8 -0
  159. package/lib/utils/searchUtils.d.ts.map +1 -0
  160. package/lib/utils/searchUtils.js +8 -0
  161. package/lib/utils/searchUtils.js.map +1 -0
  162. package/lib/utils/skipToContentUtils.d.ts +20 -0
  163. package/lib/utils/skipToContentUtils.d.ts.map +1 -0
  164. package/lib/utils/skipToContentUtils.js +75 -0
  165. package/lib/utils/skipToContentUtils.js.map +1 -0
  166. package/lib/utils/storageUtils.d.ts +36 -0
  167. package/lib/utils/storageUtils.d.ts.map +1 -0
  168. package/lib/utils/storageUtils.js +193 -0
  169. package/lib/utils/storageUtils.js.map +1 -0
  170. package/lib/utils/tabsUtils.d.ts +55 -0
  171. package/lib/utils/tabsUtils.d.ts.map +1 -0
  172. package/lib/utils/tabsUtils.js +179 -0
  173. package/lib/utils/tabsUtils.js.map +1 -0
  174. package/lib/utils/tagsUtils.d.ts +20 -0
  175. package/lib/utils/tagsUtils.d.ts.map +1 -0
  176. package/lib/utils/tagsUtils.js +41 -0
  177. package/lib/utils/tagsUtils.js.map +1 -0
  178. package/lib/utils/titleFormatterUtils.d.ts +59 -0
  179. package/lib/utils/titleFormatterUtils.d.ts.map +1 -0
  180. package/lib/utils/titleFormatterUtils.js +49 -0
  181. package/lib/utils/titleFormatterUtils.js.map +1 -0
  182. package/lib/utils/tocUtils.d.ts +36 -0
  183. package/lib/utils/tocUtils.d.ts.map +1 -0
  184. package/lib/utils/tocUtils.js +84 -0
  185. package/lib/utils/tocUtils.js.map +1 -0
  186. package/lib/utils/useAlternatePageUtils.d.ts +32 -0
  187. package/lib/utils/useAlternatePageUtils.d.ts.map +1 -0
  188. package/lib/utils/useAlternatePageUtils.js +42 -0
  189. package/lib/utils/useAlternatePageUtils.js.map +1 -0
  190. package/lib/utils/useLocalPathname.d.ts +13 -0
  191. package/lib/utils/useLocalPathname.d.ts.map +1 -0
  192. package/lib/utils/useLocalPathname.js +19 -0
  193. package/lib/utils/useLocalPathname.js.map +1 -0
  194. package/lib/utils/useLocationChange.d.ts +17 -0
  195. package/lib/utils/useLocationChange.d.ts.map +1 -0
  196. package/lib/utils/useLocationChange.js +31 -0
  197. package/lib/utils/useLocationChange.js.map +1 -0
  198. package/lib/utils/usePluralForm.d.ts +21 -0
  199. package/lib/utils/usePluralForm.d.ts.map +1 -0
  200. package/lib/utils/usePluralForm.js +93 -0
  201. package/lib/utils/usePluralForm.js.map +1 -0
  202. package/lib/utils/useThemeConfig.d.ts +120 -0
  203. package/lib/utils/useThemeConfig.d.ts.map +1 -0
  204. package/lib/utils/useThemeConfig.js +14 -0
  205. package/lib/utils/useThemeConfig.js.map +1 -0
  206. package/package.json +58 -4
  207. package/src/components/Collapsible/index.tsx +250 -0
  208. package/src/components/Details/index.tsx +130 -0
  209. package/src/components/Details/styles.module.css +66 -0
  210. package/src/components/ThemedComponent/index.tsx +75 -0
  211. package/src/components/ThemedComponent/styles.module.css +26 -0
  212. package/src/contexts/announcementBar.tsx +117 -0
  213. package/src/contexts/colorMode.tsx +257 -0
  214. package/src/contexts/navbarMobileSidebar.tsx +119 -0
  215. package/src/contexts/navbarSecondaryMenu/content.tsx +100 -0
  216. package/src/contexts/navbarSecondaryMenu/display.tsx +102 -0
  217. package/src/hooks/useBackToTopButton.ts +73 -0
  218. package/src/hooks/useCodeWordWrap.ts +107 -0
  219. package/src/hooks/useHideableNavbar.ts +81 -0
  220. package/src/hooks/useLockBodyScroll.ts +21 -0
  221. package/src/hooks/useMutationObserver.ts +38 -0
  222. package/src/hooks/usePrismTheme.ts +24 -0
  223. package/src/hooks/useTOCHighlight.ts +189 -0
  224. package/src/hooks/useWindowSize.ts +67 -0
  225. package/src/index.ts +112 -0
  226. package/src/internal.ts +107 -0
  227. package/src/translations/blogTranslations.tsx +89 -0
  228. package/src/translations/contentVisibilityTranslations.tsx +51 -0
  229. package/src/translations/docsTranslations.tsx +28 -0
  230. package/src/types.d.ts +8 -0
  231. package/src/utils/IntlUtils.ts +27 -0
  232. package/src/utils/ThemeClassNames.ts +119 -0
  233. package/src/utils/accessibilityUtils.ts +10 -0
  234. package/src/utils/admonitionUtils.tsx +44 -0
  235. package/src/utils/anchorUtils.module.css +14 -0
  236. package/src/utils/anchorUtils.ts +31 -0
  237. package/src/utils/codeBlockUtils.tsx +494 -0
  238. package/src/utils/emojiUtils.ts +40 -0
  239. package/src/utils/errorBoundaryUtils.module.css +16 -0
  240. package/src/utils/errorBoundaryUtils.tsx +71 -0
  241. package/src/utils/footerUtils.ts +18 -0
  242. package/src/utils/historyUtils.ts +199 -0
  243. package/src/utils/jsUtils.ts +54 -0
  244. package/src/utils/metadataUtils.tsx +145 -0
  245. package/src/utils/navbarUtils.tsx +45 -0
  246. package/src/utils/reactUtils.tsx +120 -0
  247. package/src/utils/regexpUtils.ts +24 -0
  248. package/src/utils/routesUtils.ts +75 -0
  249. package/src/utils/scrollUtils.tsx +303 -0
  250. package/src/utils/searchUtils.ts +8 -0
  251. package/src/utils/skipToContentUtils.tsx +108 -0
  252. package/src/utils/storageUtils.ts +260 -0
  253. package/src/utils/tabsUtils.tsx +307 -0
  254. package/src/utils/tagsUtils.tsx +61 -0
  255. package/src/utils/titleFormatterUtils.tsx +120 -0
  256. package/src/utils/tocUtils.ts +119 -0
  257. package/src/utils/useAlternatePageUtils.ts +80 -0
  258. package/src/utils/useLocalPathname.ts +22 -0
  259. package/src/utils/useLocationChange.ts +41 -0
  260. package/src/utils/usePluralForm.ts +131 -0
  261. package/src/utils/useThemeConfig.ts +147 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorMode.d.ts","sourceRoot":"","sources":["../../src/contexts/colorMode.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAc,EAMZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAOf,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAIzC,KAAK,eAAe,GAAG,SAAS,GAAG,IAAI,CAAC;AAyBxC,KAAK,YAAY,GAAG;IAClB,gCAAgC;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,uCAAuC;IACvC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,0BAA0B;IAC1B,QAAQ,CAAC,YAAY,EAAE,CAAC,SAAS,EAAE,eAAe,KAAK,IAAI,CAAC;CAC7D,CAAC;AAqLF,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;CACrB,GAAG,SAAS,CAGZ;AAED,wBAAgB,YAAY,IAAI,YAAY,CAS3C"}
@@ -0,0 +1,163 @@
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, { useState, useCallback, useEffect, useContext, useMemo, } from 'react';
8
+ import useIsBrowser from '@docusaurus/useIsBrowser';
9
+ import { ReactContextError } from '../utils/reactUtils';
10
+ import { createStorageSlot } from '../utils/storageUtils';
11
+ import { useThemeConfig } from '../utils/useThemeConfig';
12
+ function getSystemColorMode() {
13
+ return window.matchMedia('(prefers-color-scheme: dark)').matches
14
+ ? 'dark'
15
+ : 'light';
16
+ }
17
+ function subscribeToMedia(query, listener) {
18
+ const mql = window.matchMedia(query);
19
+ mql.addEventListener('change', listener);
20
+ return () => mql.removeEventListener('change', listener);
21
+ }
22
+ function subscribeToSystemColorModeChange(onChange) {
23
+ return subscribeToMedia('(prefers-color-scheme: dark)', () => onChange(getSystemColorMode()));
24
+ }
25
+ const Context = React.createContext(undefined);
26
+ const ColorModeStorageKey = 'theme';
27
+ const ColorModeStorage = createStorageSlot(ColorModeStorageKey);
28
+ // We use data-theme-choice="system", not an absent attribute
29
+ // This is easier to handle for users with CSS
30
+ const SystemAttribute = 'system';
31
+ // Ensure to always return a valid colorMode even if input is invalid
32
+ const coerceToColorMode = (colorMode) => colorMode === 'dark' ? 'dark' : 'light';
33
+ const coerceToColorModeChoice = (colorMode) => colorMode === null || colorMode === SystemAttribute
34
+ ? null
35
+ : coerceToColorMode(colorMode);
36
+ const ColorModeAttribute = {
37
+ get: () => {
38
+ return coerceToColorMode(document.documentElement.getAttribute('data-theme'));
39
+ },
40
+ set: (colorMode) => {
41
+ document.documentElement.setAttribute('data-theme', coerceToColorMode(colorMode));
42
+ },
43
+ };
44
+ const ColorModeChoiceAttribute = {
45
+ get: () => {
46
+ return coerceToColorModeChoice(document.documentElement.getAttribute('data-theme-choice'));
47
+ },
48
+ set: (colorMode) => {
49
+ document.documentElement.setAttribute('data-theme-choice', coerceToColorModeChoice(colorMode) ?? SystemAttribute);
50
+ },
51
+ };
52
+ const persistColorModeChoice = (newColorMode) => {
53
+ if (newColorMode === null) {
54
+ ColorModeStorage.del();
55
+ }
56
+ else {
57
+ ColorModeStorage.set(coerceToColorMode(newColorMode));
58
+ }
59
+ };
60
+ // The color mode state is initialized in useEffect on purpose
61
+ // to avoid a React hydration mismatch errors
62
+ // The useColorMode() hook value lags behind on purpose
63
+ // This helps users avoid hydration mismatch errors in their code
64
+ // See also https://github.com/facebook/docusaurus/issues/7986
65
+ function useColorModeState() {
66
+ const { colorMode: { defaultMode }, } = useThemeConfig();
67
+ const isBrowser = useIsBrowser();
68
+ // Since the provider may unmount/remount on client navigation, we need to
69
+ // reinitialize the state with the correct values to avoid visual glitches.
70
+ // See also https://github.com/facebook/docusaurus/issues/11399#issuecomment-3279181314
71
+ const [colorMode, setColorModeState] = useState(isBrowser ? ColorModeAttribute.get() : defaultMode);
72
+ const [colorModeChoice, setColorModeChoiceState] = useState(isBrowser ? ColorModeChoiceAttribute.get() : null);
73
+ useEffect(() => {
74
+ setColorModeState(ColorModeAttribute.get());
75
+ setColorModeChoiceState(ColorModeChoiceAttribute.get());
76
+ }, []);
77
+ return {
78
+ colorMode,
79
+ setColorModeState,
80
+ colorModeChoice,
81
+ setColorModeChoiceState,
82
+ };
83
+ }
84
+ function useContextValue() {
85
+ const { colorMode: { defaultMode, disableSwitch, respectPrefersColorScheme }, } = useThemeConfig();
86
+ const { colorMode, setColorModeState, colorModeChoice, setColorModeChoiceState, } = useColorModeState();
87
+ useEffect(() => {
88
+ // A site is deployed without disableSwitch
89
+ // => User visits the site and has a persisted value
90
+ // => Site later enabled disableSwitch
91
+ // => Clear the previously stored value to apply the site's setting
92
+ if (disableSwitch) {
93
+ ColorModeStorage.del();
94
+ }
95
+ }, [disableSwitch]);
96
+ const setColorMode = useCallback((newColorModeChoice, options = {}) => {
97
+ const { persist = true } = options;
98
+ // Reset to system/default color mode
99
+ if (newColorModeChoice === null) {
100
+ // Set the effective color
101
+ const newColorMode = respectPrefersColorScheme
102
+ ? getSystemColorMode()
103
+ : defaultMode;
104
+ ColorModeAttribute.set(newColorMode);
105
+ setColorModeState(newColorMode);
106
+ // Set the chosen color
107
+ ColorModeChoiceAttribute.set(null);
108
+ setColorModeChoiceState(null);
109
+ }
110
+ // Happy case, when an explicit color is provided
111
+ else {
112
+ ColorModeAttribute.set(newColorModeChoice);
113
+ ColorModeChoiceAttribute.set(newColorModeChoice);
114
+ setColorModeState(newColorModeChoice);
115
+ setColorModeChoiceState(newColorModeChoice);
116
+ }
117
+ if (persist) {
118
+ persistColorModeChoice(newColorModeChoice);
119
+ }
120
+ }, [
121
+ setColorModeState,
122
+ setColorModeChoiceState,
123
+ respectPrefersColorScheme,
124
+ defaultMode,
125
+ ]);
126
+ // Synchronize theme color/choice mode with browser storage
127
+ useEffect(() => {
128
+ return ColorModeStorage.listen((e) => {
129
+ setColorMode(coerceToColorModeChoice(e.newValue));
130
+ });
131
+ }, [setColorMode]);
132
+ // Synchronize theme color with system color
133
+ useEffect(() => {
134
+ if (colorModeChoice !== null || !respectPrefersColorScheme) {
135
+ return undefined;
136
+ }
137
+ return subscribeToSystemColorModeChange((newSystemColorMode) => {
138
+ // Note: we don't use "setColorMode" on purpose
139
+ // The system changes should never be considered an explicit theme choice
140
+ // They only affect the "effective" color, and should never be persisted
141
+ // Note: this listener also fire when printing, see https://github.com/facebook/docusaurus/pull/6490
142
+ setColorModeState(newSystemColorMode);
143
+ ColorModeAttribute.set(newSystemColorMode);
144
+ });
145
+ }, [respectPrefersColorScheme, colorModeChoice, setColorModeState]);
146
+ return useMemo(() => ({
147
+ colorMode,
148
+ colorModeChoice,
149
+ setColorMode,
150
+ }), [colorMode, colorModeChoice, setColorMode]);
151
+ }
152
+ export function ColorModeProvider({ children, }) {
153
+ const value = useContextValue();
154
+ return <Context value={value}>{children}</Context>;
155
+ }
156
+ export function useColorMode() {
157
+ const context = useContext(Context);
158
+ if (context == null) {
159
+ throw new ReactContextError('ColorModeProvider', 'Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.');
160
+ }
161
+ return context;
162
+ }
163
+ //# sourceMappingURL=colorMode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorMode.js","sourceRoot":"","sources":["../../src/contexts/colorMode.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
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 ContextValue = {
9
+ /**
10
+ * Mobile sidebar should be disabled in case it's empty, i.e. no secondary
11
+ * menu + no navbar items). If disabled, the toggle button should not be
12
+ * displayed at all.
13
+ */
14
+ disabled: boolean;
15
+ /**
16
+ * Signals whether the actual sidebar should be displayed (contrary to
17
+ * `disabled` which is about the toggle button). Sidebar should not visible
18
+ * until user interaction to avoid SSR rendering.
19
+ */
20
+ shouldRender: boolean;
21
+ /** The displayed state. Can be toggled with the `toggle` callback. */
22
+ shown: boolean;
23
+ /** Toggle the `shown` attribute. */
24
+ toggle: () => void;
25
+ };
26
+ export declare function NavbarMobileSidebarProvider({ children, }: {
27
+ children: ReactNode;
28
+ }): ReactNode;
29
+ export declare function useNavbarMobileSidebar(): ContextValue;
30
+ export {};
31
+ //# sourceMappingURL=navbarMobileSidebar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navbarMobileSidebar.d.ts","sourceRoot":"","sources":["../../src/contexts/navbarMobileSidebar.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAc,EAKZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAOf,KAAK,YAAY,GAAG;IAClB;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,YAAY,EAAE,OAAO,CAAC;IACtB,sEAAsE;IACtE,KAAK,EAAE,OAAO,CAAC;IACf,oCAAoC;IACpC,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AA6CF,wBAAgB,2BAA2B,CAAC,EAC1C,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;CACrB,GAAG,SAAS,CAwBZ;AAED,wBAAgB,sBAAsB,IAAI,YAAY,CAMrD"}
@@ -0,0 +1,65 @@
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, { useCallback, useEffect, useState, useMemo, } from 'react';
8
+ import { useNavbarSecondaryMenuContent } from './navbarSecondaryMenu/content';
9
+ import { useWindowSize } from '../hooks/useWindowSize';
10
+ import { useHistoryPopHandler } from '../utils/historyUtils';
11
+ import { useThemeConfig } from '../utils/useThemeConfig';
12
+ import { ReactContextError } from '../utils/reactUtils';
13
+ const Context = React.createContext(undefined);
14
+ function useIsNavbarMobileSidebarDisabled() {
15
+ const secondaryMenuContent = useNavbarSecondaryMenuContent();
16
+ const { items } = useThemeConfig().navbar;
17
+ return items.length === 0 && !secondaryMenuContent.component;
18
+ }
19
+ function useContextValue() {
20
+ const disabled = useIsNavbarMobileSidebarDisabled();
21
+ const windowSize = useWindowSize();
22
+ const shouldRender = !disabled && windowSize === 'mobile';
23
+ const [shown, setShown] = useState(false);
24
+ const toggle = useCallback(() => {
25
+ setShown((s) => !s);
26
+ }, []);
27
+ useEffect(() => {
28
+ if (windowSize === 'desktop') {
29
+ setShown(false);
30
+ }
31
+ }, [windowSize]);
32
+ return useMemo(() => ({ disabled, shouldRender, toggle, shown }), [disabled, shouldRender, toggle, shown]);
33
+ }
34
+ // A component hook wrapper enables conditional rendering
35
+ // See reason here: https://github.com/facebook/docusaurus/issues/10988
36
+ function OnHistoryPop({ handler, }) {
37
+ useHistoryPopHandler(handler);
38
+ return null;
39
+ }
40
+ export function NavbarMobileSidebarProvider({ children, }) {
41
+ const value = useContextValue();
42
+ return (<>
43
+ {
44
+ // Close mobile sidebar on navigation pop
45
+ // Most likely firing when using the Android back button (but not only)
46
+ // Important: we can only have a single history blocker at a time
47
+ // That's why this needs to be rendered conditionally
48
+ // See bug report https://github.com/facebook/docusaurus/issues/10988
49
+ value.shown && (<OnHistoryPop handler={() => {
50
+ value.toggle();
51
+ // Prevent pop navigation; seems desirable enough
52
+ // See https://github.com/facebook/docusaurus/pull/5462#issuecomment-911699846
53
+ return false;
54
+ }}/>)}
55
+ <Context value={value}>{children}</Context>
56
+ </>);
57
+ }
58
+ export function useNavbarMobileSidebar() {
59
+ const context = React.useContext(Context);
60
+ if (context === undefined) {
61
+ throw new ReactContextError('NavbarMobileSidebarProvider');
62
+ }
63
+ return context;
64
+ }
65
+ //# sourceMappingURL=navbarMobileSidebar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navbarMobileSidebar.js","sourceRoot":"","sources":["../../src/contexts/navbarMobileSidebar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
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, type ComponentType } from 'react';
8
+ export type NavbarSecondaryMenuComponent<Props> = ComponentType<Props>;
9
+ /** @internal */
10
+ export type Content = {
11
+ component: NavbarSecondaryMenuComponent<object>;
12
+ props: object;
13
+ } | {
14
+ component: null;
15
+ props: null;
16
+ };
17
+ /** @internal */
18
+ export declare function NavbarSecondaryMenuContentProvider({ children, }: {
19
+ children: ReactNode;
20
+ }): ReactNode;
21
+ /** @internal */
22
+ export declare function useNavbarSecondaryMenuContent(): Content;
23
+ /**
24
+ * This component renders nothing by itself, but it fills the placeholder in the
25
+ * generic secondary menu layout. This reduces coupling between the main layout
26
+ * and the specific page.
27
+ *
28
+ * This kind of feature is often called portal/teleport/gateway/outlet...
29
+ * Various unmaintained React libs exist. Most up-to-date one:
30
+ * https://github.com/gregberge/react-teleporter
31
+ * Not sure any of those is safe regarding concurrent mode.
32
+ */
33
+ export declare function NavbarSecondaryMenuFiller<P extends object>({ component, props, }: {
34
+ component: NavbarSecondaryMenuComponent<P>;
35
+ props: P;
36
+ }): ReactNode;
37
+ //# sourceMappingURL=content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../src/contexts/navbarSecondaryMenu/content.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAc,EAIZ,KAAK,SAAS,EACd,KAAK,aAAa,EACnB,MAAM,OAAO,CAAC;AAUf,MAAM,MAAM,4BAA4B,CAAC,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;AAEvE,gBAAgB;AAChB,MAAM,MAAM,OAAO,GACf;IACE,SAAS,EAAE,4BAA4B,CAAC,MAAM,CAAC,CAAC;IAChD,KAAK,EAAE,MAAM,CAAC;CACf,GACD;IAAC,SAAS,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAC,CAAC;AASnC,gBAAgB;AAChB,wBAAgB,kCAAkC,CAAC,EACjD,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;CACrB,GAAG,SAAS,CAMZ;AAED,gBAAgB;AAChB,wBAAgB,6BAA6B,IAAI,OAAO,CAMvD;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,MAAM,EAAE,EAC1D,SAAS,EACT,KAAK,GACN,EAAE;IACD,SAAS,EAAE,4BAA4B,CAAC,CAAC,CAAC,CAAC;IAC3C,KAAK,EAAE,CAAC,CAAC;CACV,GAAG,SAAS,CAqBZ"}
@@ -0,0 +1,50 @@
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, { useState, useContext, useEffect, } from 'react';
8
+ import { ReactContextError, useShallowMemoObject } from '../../utils/reactUtils';
9
+ const Context = React.createContext(null);
10
+ /** @internal */
11
+ export function NavbarSecondaryMenuContentProvider({ children, }) {
12
+ const value = useState({ component: null, props: null });
13
+ return (
14
+ // @ts-expect-error: this context is hard to type
15
+ <Context value={value}>{children}</Context>);
16
+ }
17
+ /** @internal */
18
+ export function useNavbarSecondaryMenuContent() {
19
+ const value = useContext(Context);
20
+ if (!value) {
21
+ throw new ReactContextError('NavbarSecondaryMenuContentProvider');
22
+ }
23
+ return value[0];
24
+ }
25
+ /**
26
+ * This component renders nothing by itself, but it fills the placeholder in the
27
+ * generic secondary menu layout. This reduces coupling between the main layout
28
+ * and the specific page.
29
+ *
30
+ * This kind of feature is often called portal/teleport/gateway/outlet...
31
+ * Various unmaintained React libs exist. Most up-to-date one:
32
+ * https://github.com/gregberge/react-teleporter
33
+ * Not sure any of those is safe regarding concurrent mode.
34
+ */
35
+ export function NavbarSecondaryMenuFiller({ component, props, }) {
36
+ const context = useContext(Context);
37
+ if (!context) {
38
+ throw new ReactContextError('NavbarSecondaryMenuContentProvider');
39
+ }
40
+ const [, setContent] = context;
41
+ // To avoid useless context re-renders, props are memoized shallowly
42
+ const memoizedProps = useShallowMemoObject(props);
43
+ useEffect(() => {
44
+ // @ts-expect-error: this context is hard to type
45
+ setContent({ component, props: memoizedProps });
46
+ }, [setContent, component, memoizedProps]);
47
+ useEffect(() => () => setContent({ component: null, props: null }), [setContent]);
48
+ return null;
49
+ }
50
+ //# sourceMappingURL=content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["../../../src/contexts/navbarSecondaryMenu/content.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,EACZ,QAAQ,EACR,UAAU,EACV,SAAS,GAGV,MAAM,OAAO,CAAC;AACf,OAAO,EAAC,iBAAiB,EAAE,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAwB/E,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAsB,IAAI,CAAC,CAAC;AAE/D,gBAAgB;AAChB,MAAM,UAAU,kCAAkC,CAAC,EACjD,QAAQ,GAGT;IACC,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC;IACvD,OAAO;IACL,iDAAiD;IACjD,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAC5C,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,6BAA6B;IAC3C,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,iBAAiB,CAAC,oCAAoC,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CAAmB,EAC1D,SAAS,EACT,KAAK,GAIN;IACC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,iBAAiB,CAAC,oCAAoC,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC;IAE/B,oEAAoE;IACpE,MAAM,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAElD,SAAS,CAAC,GAAG,EAAE;QACb,iDAAiD;QACjD,UAAU,CAAC,EAAC,SAAS,EAAE,KAAK,EAAE,aAAa,EAAC,CAAC,CAAC;IAChD,CAAC,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;IAE3C,SAAS,CACP,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,EAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC,EACtD,CAAC,UAAU,CAAC,CACb,CAAC;IAEF,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,24 @@
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
+ /** @internal */
9
+ export declare function NavbarSecondaryMenuDisplayProvider({ children, }: {
10
+ children: ReactNode;
11
+ }): ReactNode;
12
+ /** Wires the logic for rendering the mobile navbar secondary menu. */
13
+ export declare function useNavbarSecondaryMenu(): {
14
+ /** Whether secondary menu is displayed. */
15
+ shown: boolean;
16
+ /**
17
+ * Hide the secondary menu; fired either when hiding the entire sidebar, or
18
+ * when going back to the primary menu.
19
+ */
20
+ hide: () => void;
21
+ /** The content returned from the current secondary menu filler. */
22
+ content: ReactNode;
23
+ };
24
+ //# sourceMappingURL=display.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../../src/contexts/navbarSecondaryMenu/display.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAc,EAMZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AA6Cf,gBAAgB;AAChB,wBAAgB,kCAAkC,CAAC,EACjD,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;CACrB,GAAG,SAAS,CAGZ;AAUD,sEAAsE;AACtE,wBAAgB,sBAAsB,IAAI;IACxC,2CAA2C;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,mEAAmE;IACnE,OAAO,EAAE,SAAS,CAAC;CACpB,CAaA"}
@@ -0,0 +1,62 @@
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, { useState, useContext, useEffect, useMemo, useCallback, } from 'react';
8
+ import { ReactContextError, usePrevious } from '../../utils/reactUtils';
9
+ import { useNavbarMobileSidebar } from '../navbarMobileSidebar';
10
+ import { useNavbarSecondaryMenuContent } from './content';
11
+ const Context = React.createContext(null);
12
+ function useContextValue() {
13
+ const mobileSidebar = useNavbarMobileSidebar();
14
+ const content = useNavbarSecondaryMenuContent();
15
+ const [shown, setShown] = useState(false);
16
+ const hasContent = content.component !== null;
17
+ const previousHasContent = usePrevious(hasContent);
18
+ // When content is become available for the first time (set in useEffect)
19
+ // we set this content to be shown!
20
+ useEffect(() => {
21
+ const contentBecameAvailable = hasContent && !previousHasContent;
22
+ if (contentBecameAvailable) {
23
+ setShown(true);
24
+ }
25
+ }, [hasContent, previousHasContent]);
26
+ // On sidebar close, secondary menu is set to be shown on next re-opening
27
+ // (if any secondary menu content available)
28
+ useEffect(() => {
29
+ if (!hasContent) {
30
+ setShown(false);
31
+ return;
32
+ }
33
+ if (!mobileSidebar.shown) {
34
+ setShown(true);
35
+ }
36
+ }, [mobileSidebar.shown, hasContent]);
37
+ return useMemo(() => [shown, setShown], [shown]);
38
+ }
39
+ /** @internal */
40
+ export function NavbarSecondaryMenuDisplayProvider({ children, }) {
41
+ const value = useContextValue();
42
+ return <Context value={value}>{children}</Context>;
43
+ }
44
+ function renderElement(content) {
45
+ if (content.component) {
46
+ const Comp = content.component;
47
+ return <Comp {...content.props}/>;
48
+ }
49
+ return undefined;
50
+ }
51
+ /** Wires the logic for rendering the mobile navbar secondary menu. */
52
+ export function useNavbarSecondaryMenu() {
53
+ const value = useContext(Context);
54
+ if (!value) {
55
+ throw new ReactContextError('NavbarSecondaryMenuDisplayProvider');
56
+ }
57
+ const [shown, setShown] = value;
58
+ const hide = useCallback(() => setShown(false), [setShown]);
59
+ const content = useNavbarSecondaryMenuContent();
60
+ return useMemo(() => ({ shown, hide, content: renderElement(content) }), [hide, content, shown]);
61
+ }
62
+ //# sourceMappingURL=display.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display.js","sourceRoot":"","sources":["../../../src/contexts/navbarSecondaryMenu/display.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
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
+ /** Wires the logic for the back to top button. */
8
+ export declare function useBackToTopButton({ threshold, }: {
9
+ /**
10
+ * The minimum vertical scroll position, above which a scroll-up would not
11
+ * cause `shown` to become `true`. This is because BTT is only useful if the
12
+ * user is far down the page.
13
+ */
14
+ threshold: number;
15
+ }): {
16
+ /**
17
+ * Whether the button should be displayed. We only show if the user has
18
+ * scrolled up and is on a vertical position greater than `threshold`.
19
+ */
20
+ shown: boolean;
21
+ /**
22
+ * A (memoized) handle for starting the scroll, which you can directly plug
23
+ * into the props.
24
+ */
25
+ scrollToTop: () => void;
26
+ };
27
+ //# sourceMappingURL=useBackToTopButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBackToTopButton.d.ts","sourceRoot":"","sources":["../../src/hooks/useBackToTopButton.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,kDAAkD;AAClD,wBAAgB,kBAAkB,CAAC,EACjC,SAAS,GACV,EAAE;IACD;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG;IACF;;;OAGG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,CAwCA"}
@@ -0,0 +1,50 @@
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 { useRef, useState } from 'react';
8
+ import { useScrollPosition, useSmoothScrollTo } from '../utils/scrollUtils';
9
+ import { useLocationChange } from '../utils/useLocationChange';
10
+ /** Wires the logic for the back to top button. */
11
+ export function useBackToTopButton({ threshold, }) {
12
+ const [shown, setShown] = useState(false);
13
+ const isFocusedAnchor = useRef(false);
14
+ const { startScroll, cancelScroll } = useSmoothScrollTo();
15
+ useScrollPosition(({ scrollY: scrollTop }, lastPosition) => {
16
+ const lastScrollTop = lastPosition?.scrollY;
17
+ // Component is just being mounted. Not really a scroll event from the user.
18
+ // Ignore it.
19
+ if (!lastScrollTop) {
20
+ return;
21
+ }
22
+ if (isFocusedAnchor.current) {
23
+ // This scroll position change is triggered by navigating to an anchor.
24
+ // Ignore it.
25
+ isFocusedAnchor.current = false;
26
+ }
27
+ else if (scrollTop >= lastScrollTop) {
28
+ // The user has scrolled down to "fight against" the animation. Cancel any
29
+ // animation under progress.
30
+ cancelScroll();
31
+ setShown(false);
32
+ }
33
+ else if (scrollTop < threshold) {
34
+ // Scrolled to the minimum position; hide the button.
35
+ setShown(false);
36
+ }
37
+ else if (scrollTop + window.innerHeight <
38
+ document.documentElement.scrollHeight) {
39
+ setShown(true);
40
+ }
41
+ });
42
+ useLocationChange((locationChangeEvent) => {
43
+ if (locationChangeEvent.location.hash) {
44
+ isFocusedAnchor.current = true;
45
+ setShown(false);
46
+ }
47
+ });
48
+ return { shown, scrollToTop: () => startScroll(0) };
49
+ }
50
+ //# sourceMappingURL=useBackToTopButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBackToTopButton.js","sourceRoot":"","sources":["../../src/hooks/useBackToTopButton.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,MAAM,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AACvC,OAAO,EAAC,iBAAiB,EAAE,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAC,iBAAiB,EAAC,MAAM,4BAA4B,CAAC;AAE7D,kDAAkD;AAClD,MAAM,UAAU,kBAAkB,CAAC,EACjC,SAAS,GAQV;IAYC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,EAAC,WAAW,EAAE,YAAY,EAAC,GAAG,iBAAiB,EAAE,CAAC;IAExD,iBAAiB,CAAC,CAAC,EAAC,OAAO,EAAE,SAAS,EAAC,EAAE,YAAY,EAAE,EAAE;QACvD,MAAM,aAAa,GAAG,YAAY,EAAE,OAAO,CAAC;QAC5C,4EAA4E;QAC5E,aAAa;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;YAC5B,uEAAuE;YACvE,aAAa;YACb,eAAe,CAAC,OAAO,GAAG,KAAK,CAAC;QAClC,CAAC;aAAM,IAAI,SAAS,IAAI,aAAa,EAAE,CAAC;YACtC,0EAA0E;YAC1E,4BAA4B;YAC5B,YAAY,EAAE,CAAC;YACf,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,SAAS,GAAG,SAAS,EAAE,CAAC;YACjC,qDAAqD;YACrD,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;aAAM,IACL,SAAS,GAAG,MAAM,CAAC,WAAW;YAC9B,QAAQ,CAAC,eAAe,CAAC,YAAY,EACrC,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,iBAAiB,CAAC,CAAC,mBAAmB,EAAE,EAAE;QACxC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACtC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;YAC/B,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAC,CAAC;AACpD,CAAC"}
@@ -0,0 +1,15 @@
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 { RefObject } from 'react';
8
+ export type WordWrap = {
9
+ readonly codeBlockRef: RefObject<HTMLPreElement | null>;
10
+ readonly isEnabled: boolean;
11
+ readonly isCodeScrollable: boolean;
12
+ readonly toggle: () => void;
13
+ };
14
+ export declare function useCodeWordWrap(): WordWrap;
15
+ //# sourceMappingURL=useCodeWordWrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCodeWordWrap.d.ts","sourceRoot":"","sources":["../../src/hooks/useCodeWordWrap.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAgDrC,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACxD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;CAC7B,CAAC;AAEF,wBAAgB,eAAe,IAAI,QAAQ,CA6C1C"}