diff --git a/packages/cli/package.json b/packages/cli/package.json index ca4fb17de..3f2544de8 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "rspress", - "version": "1.40.2", + "version": "1.40.3-cannary-20250126", "repository": { "type": "git", "url": "https://github.com/web-infra-dev/rspress", diff --git a/packages/core/package.json b/packages/core/package.json index 5cacacb13..3aebe3e38 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@rspress/core", - "version": "1.40.2", + "version": "1.40.3-cannary-20250126", "description": "The Rspress Documentation Framework", "bugs": "https://github.com/web-infra-dev/rspress/issues", "repository": { diff --git a/packages/create-rspress/package.json b/packages/create-rspress/package.json index 479c4024b..d4cf5e6de 100644 --- a/packages/create-rspress/package.json +++ b/packages/create-rspress/package.json @@ -1,6 +1,6 @@ { "name": "create-rspress", - "version": "1.40.2", + "version": "1.40.3-cannary-20250126", "description": "Create a new Rspress project", "homepage": "https://rspress.dev", "repository": { diff --git a/packages/document/package.json b/packages/document/package.json index 13b089ee8..c90a780d5 100644 --- a/packages/document/package.json +++ b/packages/document/package.json @@ -1,6 +1,6 @@ { "name": "@rspress/docs", - "version": "1.40.2", + "version": "1.40.3-cannary-20250126", "repository": { "type": "git", "url": "https://github.com/web-infra-dev/rspress", diff --git a/packages/modern-plugin-rspress/package.json b/packages/modern-plugin-rspress/package.json index 3db311459..2bf7c4af6 100644 --- a/packages/modern-plugin-rspress/package.json +++ b/packages/modern-plugin-rspress/package.json @@ -1,6 +1,6 @@ { "name": "@rspress/modern-js-plugin", - "version": "1.40.2", + "version": "1.40.3-cannary-20250126", "description": "A Modern.js plugin to integrate rspress", "keywords": [ "react", diff --git a/packages/plugin-api-docgen/package.json b/packages/plugin-api-docgen/package.json index 1a74226df..8b4be93cc 100644 --- a/packages/plugin-api-docgen/package.json +++ b/packages/plugin-api-docgen/package.json @@ -1,6 +1,6 @@ { "name": "@rspress/plugin-api-docgen", - "version": "1.40.2", + "version": "1.40.3-cannary-20250126", "description": "A plugin for rspress to generate api doc.", "bugs": "https://github.com/web-infra-dev/rspress/issues", "repository": { @@ -45,7 +45,7 @@ "unist-util-visit": "^4.1.2" }, "peerDependencies": { - "@rspress/core": "workspace:^1.40.2", + "@rspress/core": "workspace:^1.40.3-cannary-20250126", "react": ">=17.0.0", "react-router-dom": "^6.8.1", "typescript": "^5.5.3" diff --git a/packages/plugin-auto-nav-sidebar/package.json b/packages/plugin-auto-nav-sidebar/package.json index 08524e52b..6e30f7b07 100644 --- a/packages/plugin-auto-nav-sidebar/package.json +++ b/packages/plugin-auto-nav-sidebar/package.json @@ -1,6 +1,6 @@ { "name": "@rspress/plugin-auto-nav-sidebar", - "version": "1.40.2", + "version": "1.40.3-cannary-20250126", "description": "A plugin for rspress to generate navbar and sidebar config automatically.", "bugs": "https://github.com/web-infra-dev/rspress/issues", "repository": { diff --git a/packages/plugin-client-redirects/package.json b/packages/plugin-client-redirects/package.json index b203ef8df..d5850ed99 100644 --- a/packages/plugin-client-redirects/package.json +++ b/packages/plugin-client-redirects/package.json @@ -1,6 +1,6 @@ { "name": "@rspress/plugin-client-redirects", - "version": "1.40.2", + "version": "1.40.3-cannary-20250126", "description": "A plugin for rspress to client redirect in docs.", "bugs": "https://github.com/web-infra-dev/rspress/issues", "repository": { @@ -44,7 +44,7 @@ "vitest": "2.1.8" }, "peerDependencies": { - "@rspress/runtime": "workspace:^1.40.2" + "@rspress/runtime": "workspace:^1.40.3-cannary-20250126" }, "engines": { "node": ">=14.17.6" diff --git a/packages/plugin-container-syntax/package.json b/packages/plugin-container-syntax/package.json index 615ca1ef0..191bc23a1 100644 --- a/packages/plugin-container-syntax/package.json +++ b/packages/plugin-container-syntax/package.json @@ -1,6 +1,6 @@ { "name": "@rspress/plugin-container-syntax", - "version": "1.40.2", + "version": "1.40.3-cannary-20250126", "description": "A remark plugin to support container syntax", "bugs": "https://github.com/web-infra-dev/rspress/issues", "repository": { diff --git a/packages/plugin-last-updated/package.json b/packages/plugin-last-updated/package.json index eccf88a43..067e0b96e 100644 --- a/packages/plugin-last-updated/package.json +++ b/packages/plugin-last-updated/package.json @@ -1,6 +1,6 @@ { "name": "@rspress/plugin-last-updated", - "version": "1.40.2", + "version": "1.40.3-cannary-20250126", "description": "A plugin for rspress to record the last updated time of the doc.", "bugs": "https://github.com/web-infra-dev/rspress/issues", "repository": { diff --git a/packages/plugin-medium-zoom/package.json b/packages/plugin-medium-zoom/package.json index 2c175f4bf..7d8595afa 100644 --- a/packages/plugin-medium-zoom/package.json +++ b/packages/plugin-medium-zoom/package.json @@ -1,6 +1,6 @@ { "name": "@rspress/plugin-medium-zoom", - "version": "1.40.2", + "version": "1.40.3-cannary-20250126", "description": "A plugin for rspress to zoom images in docs.", "bugs": "https://github.com/web-infra-dev/rspress/issues", "repository": { @@ -45,7 +45,7 @@ "vitest": "2.1.8" }, "peerDependencies": { - "@rspress/runtime": "workspace:^1.40.2" + "@rspress/runtime": "workspace:^1.40.3-cannary-20250126" }, "engines": { "node": ">=14.17.6" diff --git a/packages/plugin-playground/package.json b/packages/plugin-playground/package.json index 3a579e3dc..4d39cd1e6 100644 --- a/packages/plugin-playground/package.json +++ b/packages/plugin-playground/package.json @@ -1,6 +1,6 @@ { "name": "@rspress/plugin-playground", - "version": "1.40.2", + "version": "1.40.3-cannary-20250126", "description": "A plugin for rspress to preview the code block in markdown/mdx file.", "bugs": "https://github.com/web-infra-dev/rspress/issues", "repository": { @@ -60,7 +60,7 @@ "unist-util-visit": "^4.1.2" }, "peerDependencies": { - "@rspress/core": "workspace:^1.40.2", + "@rspress/core": "workspace:^1.40.3-cannary-20250126", "react": ">=17.0.0", "react-router-dom": "^6.8.1" }, diff --git a/packages/plugin-preview/package.json b/packages/plugin-preview/package.json index 79b0f38e8..675401ed6 100644 --- a/packages/plugin-preview/package.json +++ b/packages/plugin-preview/package.json @@ -1,6 +1,6 @@ { "name": "@rspress/plugin-preview", - "version": "1.40.2", + "version": "1.40.3-cannary-20250126", "description": "A plugin for rspress to preview the code block in markdown/mdx file.", "bugs": "https://github.com/web-infra-dev/rspress/issues", "repository": { @@ -50,7 +50,7 @@ "unist-util-visit": "^4.1.2" }, "peerDependencies": { - "@rspress/core": "workspace:^1.40.2", + "@rspress/core": "workspace:^1.40.3-cannary-20250126", "react": ">=17.0.0", "react-router-dom": "^6.8.1" }, diff --git a/packages/plugin-rss/package.json b/packages/plugin-rss/package.json index 0a936fa16..205c33067 100644 --- a/packages/plugin-rss/package.json +++ b/packages/plugin-rss/package.json @@ -1,6 +1,6 @@ { "name": "@rspress/plugin-rss", - "version": "1.40.2", + "version": "1.40.3-cannary-20250126", "description": "A plugin for rss generation for rspress", "bugs": "https://github.com/web-infra-dev/rspress/issues", "repository": { @@ -44,7 +44,7 @@ }, "peerDependencies": { "react": ">=17.0.0", - "rspress": "workspace:^1.40.2" + "rspress": "workspace:^1.40.3-cannary-20250126" }, "engines": { "node": ">=14.17.6" diff --git a/packages/plugin-shiki/package.json b/packages/plugin-shiki/package.json index 1d6d0449e..56b5b3bf2 100644 --- a/packages/plugin-shiki/package.json +++ b/packages/plugin-shiki/package.json @@ -1,6 +1,6 @@ { "name": "@rspress/plugin-shiki", - "version": "1.40.2", + "version": "1.40.3-cannary-20250126", "description": "A plugin for rspress to record the last updated time of the doc.", "bugs": "https://github.com/web-infra-dev/rspress/issues", "repository": { diff --git a/packages/plugin-typedoc/package.json b/packages/plugin-typedoc/package.json index e75581287..52b45b23a 100644 --- a/packages/plugin-typedoc/package.json +++ b/packages/plugin-typedoc/package.json @@ -1,6 +1,6 @@ { "name": "@rspress/plugin-typedoc", - "version": "1.40.2", + "version": "1.40.3-cannary-20250126", "description": "A plugin for rspress to integrate typedoc", "bugs": "https://github.com/web-infra-dev/rspress/issues", "repository": { @@ -45,7 +45,7 @@ "vitest": "2.1.8" }, "peerDependencies": { - "rspress": "workspace:^1.40.2" + "rspress": "workspace:^1.40.3-cannary-20250126" }, "engines": { "node": ">=14.17.6" diff --git a/packages/runtime/package.json b/packages/runtime/package.json index 2612aaa55..23e8c3fc3 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -1,6 +1,6 @@ { "name": "@rspress/runtime", - "version": "1.40.2", + "version": "1.40.3-cannary-20250126", "description": "The Runtime of Rspress Documentation Framework", "bugs": "https://github.com/web-infra-dev/rspress/issues", "repository": { diff --git a/packages/shared/package.json b/packages/shared/package.json index 13016ab02..eddff670e 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -1,6 +1,6 @@ { "name": "@rspress/shared", - "version": "1.40.2", + "version": "1.40.3-cannary-20250126", "repository": { "type": "git", "url": "https://github.com/web-infra-dev/rspress", diff --git a/packages/theme-default/package.json b/packages/theme-default/package.json index f1db0b1bd..72ca6ab57 100644 --- a/packages/theme-default/package.json +++ b/packages/theme-default/package.json @@ -1,6 +1,6 @@ { "name": "@rspress/theme-default", - "version": "1.40.2", + "version": "1.40.3-cannary-20250126", "description": "The Default Theme of Rspress Documentation Framework", "bugs": "https://github.com/web-infra-dev/rspress/issues", "repository": { diff --git a/packages/theme-default/src/components/Sidebar/SidebarItem.tsx b/packages/theme-default/src/components/Sidebar/SidebarItem.tsx index 7eea0183f..857ee5340 100644 --- a/packages/theme-default/src/components/Sidebar/SidebarItem.tsx +++ b/packages/theme-default/src/components/Sidebar/SidebarItem.tsx @@ -9,6 +9,7 @@ import { preloadLink } from './utils'; export function SidebarItem(props: SidebarItemProps) { const { item, depth = 0, activeMatcher, id, setSidebarData } = props; + const active = 'link' in item && item.link && activeMatcher(item.link); const ref = useRef(null); useEffect(() => { @@ -23,10 +24,10 @@ export function SidebarItem(props: SidebarItemProps) { return ( diff --git a/packages/theme-default/src/components/Sidebar/index.tsx b/packages/theme-default/src/components/Sidebar/index.tsx index 26b7bea97..384c8876a 100644 --- a/packages/theme-default/src/components/Sidebar/index.tsx +++ b/packages/theme-default/src/components/Sidebar/index.tsx @@ -1,15 +1,13 @@ -import { matchRoutes, removeBase, useLocation } from '@rspress/runtime'; +import { useLocation } from '@rspress/runtime'; import { type SidebarDivider as ISidebarDivider, type SidebarItem as ISidebarItem, type SidebarSectionHeader as ISidebarSectionHeader, type NormalizedSidebarGroup, inBrowser, - normalizeSlash, } from '@rspress/shared'; import { useEffect, useState } from 'react'; -import { routes } from 'virtual-routes'; -import { isActive, useLocaleSiteData, useSidebarData } from '../../logic'; +import { useSidebarData } from '../../logic'; import type { UISwitchResult } from '../../logic/useUISwitch'; import { NavBarTitle } from '../Nav/NavBarTitle'; @@ -22,6 +20,7 @@ import { isSideBarCustomLink, isSidebarDivider, isSidebarSectionHeader, + useActiveMatcher, } from './utils'; export interface SidebarItemProps { @@ -45,7 +44,11 @@ interface Props { navTitle?: React.ReactNode; } -type SidebarData = (ISidebarDivider | ISidebarItem | NormalizedSidebarGroup)[]; +export type SidebarData = ( + | ISidebarDivider + | ISidebarItem + | NormalizedSidebarGroup +)[]; export const highlightTitleStyle = { fontSize: '14px', @@ -72,9 +75,9 @@ export function Sidebar(props: Props) { return rawSidebarData.filter(Boolean).flat(); }); - const localesData = useLocaleSiteData(); const pathname = decodeURIComponent(rawPathname); - const langRoutePrefix = normalizeSlash(localesData.langRoutePrefix || ''); + + const activeMatcher = useActiveMatcher(); useEffect(() => { if (inBrowser()) { @@ -133,73 +136,6 @@ export function Sidebar(props: Props) { setSidebarData(newSidebarData); }, [rawSidebarData, pathname]); - const removeLangPrefix = (path: string) => { - return path.replace(langRoutePrefix, ''); - }; - const activeMatcher = (path: string) => { - return isActive( - removeBase(removeLangPrefix(pathname)), - removeLangPrefix(path), - true, - ); - }; - - const renderItem = ( - item: - | NormalizedSidebarGroup - | ISidebarItem - | ISidebarDivider - | ISidebarSectionHeader, - index: number, - ) => { - if (isSidebarDivider(item)) { - return ( - - ); - } - - if (isSidebarSectionHeader(item)) { - return ( - - ); - } - - if (isSideBarCustomLink(item)) { - return ( -
- -
- ); - } - - return ( - - ); - }; return ( ); } + +export function SidebarList({ + sidebarData, + setSidebarData, +}: { + sidebarData: SidebarData; + setSidebarData: React.Dispatch>; +}) { + const activeMatcher = useActiveMatcher(); + return ( + <> + {sidebarData.map((item, index) => { + return ( + + ); + })} + + ); +} + +function SidebarListItem(props: { + item: + | NormalizedSidebarGroup + | ISidebarItem + | ISidebarDivider + | ISidebarSectionHeader; + index: number; + setSidebarData: React.Dispatch>; + activeMatcher: (link: string) => boolean; +}) { + const { item, index, setSidebarData, activeMatcher } = props; + if (isSidebarDivider(item)) { + return ( + + ); + } + + if (isSidebarSectionHeader(item)) { + return ( + + ); + } + + if (isSideBarCustomLink(item)) { + return ( +
+ +
+ ); + } + + return ( + + ); +} diff --git a/packages/theme-default/src/components/Sidebar/utils.ts b/packages/theme-default/src/components/Sidebar/utils.ts index 719f4ad67..58d4e3470 100644 --- a/packages/theme-default/src/components/Sidebar/utils.ts +++ b/packages/theme-default/src/components/Sidebar/utils.ts @@ -1,12 +1,14 @@ -import { matchRoutes } from '@rspress/runtime'; +import { matchRoutes, removeBase, useLocation } from '@rspress/runtime'; import { type SidebarDivider as ISidebarDivider, type SidebarItem as ISidebarItem, type SidebarSectionHeader as ISidebarSectionHeader, type NormalizedSidebarGroup, isExternalUrl, + normalizeSlash, } from '@rspress/shared'; import { routes } from 'virtual-routes'; +import { isActive, useLocaleSiteData } from '../../logic'; export const isSidebarDivider = ( item: @@ -49,3 +51,24 @@ export const preloadLink = (link: string) => { route.preload(); } }; + +export const useActiveMatcher = () => { + const localesData = useLocaleSiteData(); + const langRoutePrefix = normalizeSlash(localesData.langRoutePrefix || ''); + + const { pathname: rawPathname } = useLocation(); + + const pathname = decodeURIComponent(rawPathname); + const removeLangPrefix = (path: string) => { + return path.replace(langRoutePrefix, ''); + }; + const activeMatcher = (link: string) => { + return isActive( + removeBase(removeLangPrefix(pathname)), + removeLangPrefix(link), + true, + ); + }; + + return activeMatcher; +}; diff --git a/packages/theme-default/src/components/index.tsx b/packages/theme-default/src/components/index.tsx index 3db1ea6d6..aab626660 100644 --- a/packages/theme-default/src/components/index.tsx +++ b/packages/theme-default/src/components/index.tsx @@ -16,7 +16,7 @@ export { PackageManagerTabs } from './PackageManagerTabs'; export { PrevNextPage } from './PrevNextPage'; export { ScrollToTop } from './ScrollToTop'; export { Search, SearchPanel } from './Search'; -export { Sidebar } from './Sidebar'; +export { Sidebar, SidebarList, type SidebarData } from './Sidebar'; export { SocialLinks } from './SocialLinks'; export { SourceCode } from './SourceCode'; export { Steps } from './Steps'; diff --git a/packages/theme-default/src/logic/useSidebarData.ts b/packages/theme-default/src/logic/useSidebarData.ts index 9d393254e..777cdb398 100644 --- a/packages/theme-default/src/logic/useSidebarData.ts +++ b/packages/theme-default/src/logic/useSidebarData.ts @@ -6,7 +6,7 @@ import { type SidebarItem, addTrailingSlash, } from '@rspress/shared'; -import { useEffect, useState } from 'react'; +import { useMemo } from 'react'; import { useLocaleSiteData } from './useLocaleSiteData'; interface SidebarData { @@ -15,111 +15,78 @@ interface SidebarData { items: (NormalizedSidebarGroup | SidebarItem | SidebarDivider)[]; } -export const getSidebarGroupData = ( - sidebar: NormalizedSidebar, +/** + * @param pattern /zh/guide + * @param currentPathname /base/zh/guide/getting-started + */ +export const matchPath = ( + pattern: string, currentPathname: string, -) => { - let detectedGroupName; - for (const name of Object.keys(sidebar)) { - if (detectedGroupName && detectedGroupName !== name) { - continue; - } - if (isEqualPath(withBase(name), currentPathname)) { - // Such as `/api/`,it will return all the sidebar group - return { - group: 'Documentation', - items: sidebar[name], - }; - } - // Such as `/guide/getting-started`, it will return the guide groups and the group name `Introduction` - // eslint-disable-next-line @typescript-eslint/no-loop-func - const result = sidebar[name].find(group => { - const match = ( - item: NormalizedSidebarGroup | SidebarItem | SidebarDivider, - ): boolean => { - // Fix https://github.com/web-infra-dev/rspress/issues/241 - // For example, there is the following sidebar: - // { - // '/guide/': [ - // { - // text: 'Introduction', - // link: '/misc/team', - // }, - // { - // text: 'Getting Started', - // link: '/xyz/getting-started', - // }, - // ], - // '/misc/': [ - // { - // ... - // } - // ] - // } - // The /misc/team will match the /misc/ group instead of the /guide/ group - // However, if the current path is /xyz/getting-started, it will match the /guide/ group because there isn't any other group that matches the current path - if (!currentPathname.startsWith(withBase(name))) { - for (const otherGroupName of Object.keys(sidebar)) { - if ( - otherGroupName !== name && - currentPathname.startsWith( - // https://github.com/web-infra-dev/rspress/issues/360 - // Ensure the other group name ends with `/` to avoid some unexpected results, for example, `/react-native` will match `/react`, that's not what we want - // FIXME: should parse url instead of add trailing slash - addTrailingSlash(withBase(otherGroupName)), - ) - ) { - // Performance optimization, once we find the other group name, we can skip the other group in the future loops - detectedGroupName = otherGroupName; - return false; - } - } - } - - const isLink = 'link' in item && item.link !== ''; - const isDir = 'items' in item; +): boolean => { + const prefix = withBase(pattern); + if (prefix === currentPathname) { + return true; + } + const prefixWithTrailingSlash = addTrailingSlash(pattern); + return currentPathname.startsWith(prefixWithTrailingSlash); +}; - // 0. divider or section headers others return false +const match = ( + item: NormalizedSidebarGroup | SidebarItem | SidebarDivider, + currentPathname: string, +): NormalizedSidebarGroup | SidebarItem | undefined => { + const isLink = 'link' in item && item.link !== ''; + const isDir = 'items' in item; - // 1. file link - if (!isDir && isLink) { - // 1.1 /api/config /api/config.html - if (isEqualPath(withBase(item.link), currentPathname)) { - return true; - } - // 1.2 /api/config/index /api/config/index.html - if ( - currentPathname.includes('index') && - isEqualPath(`${item.link}/index`, currentPathname) - ) { - return true; - } - } + // 0. divider or section headers others return false - // 2. dir - if (isDir) { - // 2.1 dir link (index convention) - if ( - isLink && - (isEqualPath(withBase(item.link), currentPathname) || - isEqualPath(withBase(`${item.link}/index`), currentPathname)) - ) { - return true; - } - // 2.2 dir recursive - return item.items.some(i => match(i)); - } + // 1. file link + if (!isDir && isLink) { + // 1.1 /api/config /api/config.html + if (isEqualPath(withBase(item.link), currentPathname)) { + return item; + } + // 1.2 /api/config/index /api/config/index.html + if ( + currentPathname.includes('index') && + isEqualPath(`${item.link}/index`, currentPathname) + ) { + return item; + } + } - return false; - }; + // 2. dir + if (isDir) { + // 2.1 dir link (index convention) + if ( + isLink && + (isEqualPath(withBase(item.link), currentPathname) || + isEqualPath(withBase(`${item.link}/index`), currentPathname)) + ) { + return item; + } + // 2.2 dir recursive + for (const childItem of item.items) { + const matched = match(childItem, currentPathname); + if (matched) { + return matched; + } + } + } - return match(group); - }); + return undefined; +}; - if (result) { +export const getSidebarGroupData = ( + sidebar: NormalizedSidebar, + currentPathname: string, +) => { + for (const name of Object.keys(sidebar)) { + if (matchPath(name, currentPathname)) { const sidebarGroup = sidebar[name]; + const group = sidebarGroup.find(item => match(item, currentPathname)); return { - group: ('text' in result && result.text) || '', + group: group && 'text' in group ? group.text : '', items: sidebarGroup, }; } @@ -130,17 +97,13 @@ export const getSidebarGroupData = ( }; }; export function useSidebarData(): SidebarData { - const localeData = useLocaleSiteData(); - const sidebar = localeData.sidebar ?? {}; + const { sidebar } = useLocaleSiteData(); const { pathname: rawPathname } = useLocation(); const pathname = decodeURIComponent(rawPathname); - const [sidebarData, setSidebarData] = useState( - getSidebarGroupData(sidebar, pathname), - ); - useEffect(() => { - const newSidebarData = getSidebarGroupData(sidebar, pathname); - setSidebarData(newSidebarData); - }, [pathname, localeData.lang]); + + const sidebarData = useMemo(() => { + return getSidebarGroupData(sidebar, pathname); + }, [sidebar, pathname]); return sidebarData; } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1bee239af..44b8c7e99 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -963,7 +963,7 @@ importers: packages/plugin-api-docgen: dependencies: '@rspress/core': - specifier: workspace:^1.40.2 + specifier: workspace:^1.40.3-cannary-20250126 version: link:../core '@rspress/shared': specifier: workspace:* @@ -1058,7 +1058,7 @@ importers: packages/plugin-client-redirects: dependencies: '@rspress/runtime': - specifier: workspace:^1.40.2 + specifier: workspace:^1.40.3-cannary-20250126 version: link:../runtime '@rspress/shared': specifier: workspace:* @@ -1169,7 +1169,7 @@ importers: packages/plugin-medium-zoom: dependencies: '@rspress/runtime': - specifier: workspace:^1.40.2 + specifier: workspace:^1.40.3-cannary-20250126 version: link:../runtime medium-zoom: specifier: 1.1.0 @@ -1218,7 +1218,7 @@ importers: specifier: ^0.2.0 version: 0.2.0 '@rspress/core': - specifier: workspace:^1.40.2 + specifier: workspace:^1.40.3-cannary-20250126 version: link:../core '@rspress/shared': specifier: workspace:* @@ -1297,7 +1297,7 @@ importers: specifier: ~1.0.4 version: 1.0.4(@babel/core@7.26.0)(@rsbuild/core@1.2.0)(solid-js@1.9.4) '@rspress/core': - specifier: workspace:^1.40.2 + specifier: workspace:^1.40.3-cannary-20250126 version: link:../core '@rspress/shared': specifier: workspace:* @@ -1361,7 +1361,7 @@ importers: specifier: ^4.2.2 version: 4.2.2 rspress: - specifier: workspace:^1.40.2 + specifier: workspace:^1.40.3-cannary-20250126 version: link:../cli devDependencies: '@rspress/runtime': @@ -1438,7 +1438,7 @@ importers: specifier: workspace:* version: link:../shared rspress: - specifier: workspace:^1.40.2 + specifier: workspace:^1.40.3-cannary-20250126 version: link:../cli typedoc: specifier: 0.24.8