diff options
author | Kevin Zuniga Cuellar | 2023-09-29 13:32:05 -0400 |
---|---|---|
committer | GitHub | 2023-09-29 19:32:05 +0200 |
commit | f94727e7d286a6910f913a572b27eb17c42f1729 (patch) | |
tree | 299a843ca0d70fb63268347f1f0c8b92a20b0f3f | |
parent | 8d5ae1ce9b4304f28bfa97afdef16afa31226b06 (diff) | |
download | IT.starlight-f94727e7d286a6910f913a572b27eb17c42f1729.tar.gz IT.starlight-f94727e7d286a6910f913a572b27eb17c42f1729.tar.bz2 IT.starlight-f94727e7d286a6910f913a572b27eb17c42f1729.zip |
fix: add src path to gh edit link (#783)
-rw-r--r-- | .changeset/breezy-owls-roll.md | 5 | ||||
-rw-r--r-- | packages/starlight/components/EditLink.astro | 4 | ||||
-rw-r--r-- | packages/starlight/integrations/virtual-user-config.ts | 4 | ||||
-rw-r--r-- | packages/starlight/virtual.d.ts | 2 |
4 files changed, 11 insertions, 4 deletions
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<T extends string>(id: T): `\0${T}` { /** Vite plugin that exposes Starlight user config and project context via virtual modules. */ export function vitePluginStarlightUserConfig( opts: StarlightConfig, - { root }: Pick<AstroConfig, 'root'> + { root, srcDir }: Pick<AstroConfig, 'root' | 'srcDir'> ): NonNullable<ViteUserConfig['plugins']>[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' {} |