@brillout/docpress 0.15.8 → 0.15.10-commit-ef0b9a0

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 (43) hide show
  1. package/NavItemComponent.tsx +11 -0
  2. package/components/CodeSnippets.tsx +68 -0
  3. package/components/index.ts +1 -0
  4. package/detypePlugin.ts +68 -0
  5. package/dist/+config.js +1 -1
  6. package/dist/NavItemComponent.d.ts +0 -1
  7. package/dist/NavItemComponent.js +38 -47
  8. package/dist/components/CodeBlockTransformer.js +2 -3
  9. package/dist/components/CodeSnippets.d.ts +13 -0
  10. package/dist/components/CodeSnippets.js +39 -0
  11. package/dist/components/Comment.js +1 -2
  12. package/dist/components/FileRemoved.js +4 -6
  13. package/dist/components/HorizontalLine.js +1 -2
  14. package/dist/components/ImportMeta.js +2 -3
  15. package/dist/components/Link.js +34 -50
  16. package/dist/components/Note.js +17 -29
  17. package/dist/components/P.js +1 -12
  18. package/dist/components/RepoLink.js +7 -9
  19. package/dist/components/index.d.ts +1 -0
  20. package/dist/components/index.js +1 -0
  21. package/dist/determineNavItemsColumnLayout.js +48 -62
  22. package/dist/detypePlugin.d.ts +3 -0
  23. package/dist/detypePlugin.js +53 -0
  24. package/dist/parseMarkdownMini.js +5 -17
  25. package/dist/parsePageSections.js +41 -82
  26. package/dist/renderer/usePageContext.js +6 -7
  27. package/dist/resolvePageContext.js +91 -103
  28. package/dist/utils/Emoji/Emoji.js +13 -21
  29. package/dist/utils/assert.js +14 -16
  30. package/dist/utils/cls.js +1 -1
  31. package/dist/utils/determineSectionUrlHash.js +5 -5
  32. package/dist/utils/filter.js +2 -2
  33. package/dist/utils/getGlobalObject.js +3 -3
  34. package/dist/utils/useSelectedLanguage.d.ts +7 -0
  35. package/dist/utils/useSelectedLanguage.js +48 -0
  36. package/dist/vite.config.js +9 -7
  37. package/global.d.ts +3 -1
  38. package/index.ts +3 -0
  39. package/package.json +2 -1
  40. package/tsconfig.config.json +1 -1
  41. package/tsconfig.json +1 -0
  42. package/utils/useSelectedLanguage.ts +61 -0
  43. package/vite.config.ts +2 -0
@@ -0,0 +1,61 @@
1
+ export { useSelectedLanguage }
2
+
3
+ import { useState, useEffect, useCallback } from 'react'
4
+
5
+ const key = 'docpress:selectedLang'
6
+ const defaultSsrLang = 'ts'
7
+ const defaultClientLang = 'js'
8
+
9
+ declare global {
10
+ interface WindowEventMap {
11
+ 'lang-storage': CustomEvent
12
+ }
13
+ }
14
+
15
+ function useSelectedLanguage() {
16
+ const [selectedLang, setSelectedLang] = useState(defaultSsrLang)
17
+
18
+ const getValue = () => {
19
+ try {
20
+ return localStorage.getItem(key) ?? defaultClientLang
21
+ } catch (error) {
22
+ console.warn('Error reading from localStorage:', error)
23
+ return defaultClientLang
24
+ }
25
+ }
26
+
27
+ const setValue = useCallback((value: string) => {
28
+ try {
29
+ window.localStorage.setItem(key, value)
30
+ setSelectedLang(value)
31
+ window.dispatchEvent(new CustomEvent('lang-storage'))
32
+ } catch (error) {
33
+ console.warn('Error setting localStorage:', error)
34
+ }
35
+ }, [])
36
+
37
+ useEffect(() => {
38
+ // Initial load from localStorage
39
+ setSelectedLang(getValue())
40
+ // Update language in current tab
41
+ const handleCustomEvent = () => {
42
+ setSelectedLang(getValue())
43
+ }
44
+ // Update language if changed in another tab
45
+ const handleNativeStorage = (event: StorageEvent) => {
46
+ if (event.key === key) {
47
+ setSelectedLang(getValue())
48
+ }
49
+ }
50
+
51
+ window.addEventListener('lang-storage', handleCustomEvent)
52
+ window.addEventListener('storage', handleNativeStorage)
53
+
54
+ return () => {
55
+ window.removeEventListener('lang-storage', handleCustomEvent)
56
+ window.removeEventListener('storage', handleNativeStorage)
57
+ }
58
+ }, [])
59
+
60
+ return [selectedLang, setValue] as const
61
+ }
package/vite.config.ts CHANGED
@@ -4,6 +4,7 @@ import mdx from '@mdx-js/rollup'
4
4
  import react from '@vitejs/plugin-react-swc'
5
5
  import type { PluginOption, UserConfig } from 'vite'
6
6
  import { parsePageSections } from './parsePageSections.js'
7
+ import { detypePlugin } from './detypePlugin.js'
7
8
  import rehypePrettyCode from 'rehype-pretty-code'
8
9
  import remarkGfm from 'remark-gfm'
9
10
  import { transformerNotationDiff } from '@shikijs/transformers'
@@ -17,6 +18,7 @@ const config: UserConfig = {
17
18
  root,
18
19
  plugins: [
19
20
  parsePageSections(),
21
+ detypePlugin(),
20
22
  mdx({ rehypePlugins, remarkPlugins }) as PluginOption,
21
23
  // @vitejs/plugin-react-swc needs to be added *after* the mdx plugins
22
24
  react(),