From f94727e7d286a6910f913a572b27eb17c42f1729 Mon Sep 17 00:00:00 2001 From: Kevin Zuniga Cuellar Date: Fri, 29 Sep 2023 13:32:05 -0400 Subject: fix: add src path to gh edit link (#783) --- .changeset/breezy-owls-roll.md | 5 +++++ packages/starlight/components/EditLink.astro | 4 +++- packages/starlight/integrations/virtual-user-config.ts | 4 ++-- packages/starlight/virtual.d.ts | 2 +- 4 files changed, 11 insertions(+), 4 deletions(-) create mode 100644 .changeset/breezy-owls-roll.md diff --git a/.changeset/breezy-owls-roll.md b/.changeset/breezy-owls-roll.md new file mode 100644 index 00000000..7380eca4 --- /dev/null +++ b/.changeset/breezy-owls-roll.md @@ -0,0 +1,5 @@ +--- +'@astrojs/starlight': patch +--- + +Fix GitHub edit link to include src path from project config diff --git a/packages/starlight/components/EditLink.astro b/packages/starlight/components/EditLink.astro index ce400867..4de01348 100644 --- a/packages/starlight/components/EditLink.astro +++ b/packages/starlight/components/EditLink.astro @@ -1,6 +1,7 @@ --- import type { CollectionEntry } from 'astro:content'; import config from 'virtual:starlight/user-config'; +import project from 'virtual:starlight/project-context'; import { useTranslations } from '../utils/translations'; import Icon from '../user-components/Icon.astro'; @@ -12,6 +13,7 @@ interface Props { const t = useTranslations(Astro.props.locale); const { editUrl } = Astro.props.data; +const srcPath = project.srcDir.replace(project.root, ''); let { baseUrl } = config.editLink; if (baseUrl && baseUrl.at(-1) !== '/') baseUrl += '/'; @@ -20,7 +22,7 @@ const url = typeof editUrl === 'string' ? editUrl : baseUrl - ? baseUrl + 'src/content/docs/' + Astro.props.id + ? baseUrl + srcPath + 'content/docs/' + Astro.props.id : undefined; --- diff --git a/packages/starlight/integrations/virtual-user-config.ts b/packages/starlight/integrations/virtual-user-config.ts index f965833d..86c2b2a4 100644 --- a/packages/starlight/integrations/virtual-user-config.ts +++ b/packages/starlight/integrations/virtual-user-config.ts @@ -10,7 +10,7 @@ function resolveVirtualModuleId(id: T): `\0${T}` { /** Vite plugin that exposes Starlight user config and project context via virtual modules. */ export function vitePluginStarlightUserConfig( opts: StarlightConfig, - { root }: Pick + { root, srcDir }: Pick ): NonNullable[number] { const resolveId = (id: string) => JSON.stringify(id.startsWith('.') ? resolve(fileURLToPath(root), id) : id); @@ -18,7 +18,7 @@ export function vitePluginStarlightUserConfig( /** Map of virtual module names to their code contents as strings. */ const modules = { 'virtual:starlight/user-config': `export default ${JSON.stringify(opts)}`, - 'virtual:starlight/project-context': `export default ${JSON.stringify({ root })}`, + 'virtual:starlight/project-context': `export default ${JSON.stringify({ root, srcDir })}`, 'virtual:starlight/user-css': opts.customCss.map((id) => `import ${resolveId(id)};`).join(''), 'virtual:starlight/user-images': opts.logo ? 'src' in opts.logo diff --git a/packages/starlight/virtual.d.ts b/packages/starlight/virtual.d.ts index 1e031828..1230c460 100644 --- a/packages/starlight/virtual.d.ts +++ b/packages/starlight/virtual.d.ts @@ -3,7 +3,7 @@ declare module 'virtual:starlight/user-config' { export default Config; } declare module 'virtual:starlight/project-context' { - export default { root: string }; + export default { root: string, srcDir: string }; } declare module 'virtual:starlight/user-css' {} -- cgit