From f8b2275b4393502493ee535493420650b69bc501 Mon Sep 17 00:00:00 2001
From: Jacky Zhao <j.zhao2k19@gmail.com>
Date: Tue, 4 Jul 2023 18:02:59 -0700
Subject: [PATCH] folder and tag descriptions, re-enable relative pathing

---
 quartz/components/pages/FolderContent.tsx  | 3 +++
 quartz/components/pages/TagContent.tsx     | 3 +++
 quartz/path.ts                             | 3 +--
 quartz/plugins/transformers/description.ts | 4 +++-
 quartz/plugins/transformers/links.ts       | 5 ++---
 5 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/quartz/components/pages/FolderContent.tsx b/quartz/components/pages/FolderContent.tsx
index b00ea94..5aa7f09 100644
--- a/quartz/components/pages/FolderContent.tsx
+++ b/quartz/components/pages/FolderContent.tsx
@@ -23,9 +23,12 @@ function FolderContent(props: QuartzComponentProps) {
     allFiles: allPagesInFolder
   }
 
+  const desc = props.fileData.description
+
   // @ts-ignore
   const content = toJsxRuntime(tree, { Fragment, jsx, jsxs, elementAttributeNameCase: 'html' })
   return <div class="popover-hint">
+    {desc && <p>{desc}</p>}
     <article>{content}</article>
     <p>{allPagesInFolder.length} items under this folder.</p>
     <div>
diff --git a/quartz/components/pages/TagContent.tsx b/quartz/components/pages/TagContent.tsx
index 81e8de2..bec66e3 100644
--- a/quartz/components/pages/TagContent.tsx
+++ b/quartz/components/pages/TagContent.tsx
@@ -17,9 +17,12 @@ function TagContent(props: QuartzComponentProps) {
       allFiles: allPagesWithTag
     }
 
+    const desc = props.fileData.description
+
     // @ts-ignore
     const content = toJsxRuntime(tree, { Fragment, jsx, jsxs, elementAttributeNameCase: 'html' })
     return <div class="popover-hint">
+      {desc && <p>{desc}</p>}
       <article>{content}</article>
       <p>{allPagesWithTag.length} items with this tag.</p>
       <div>
diff --git a/quartz/path.ts b/quartz/path.ts
index a0fb223..0332584 100644
--- a/quartz/path.ts
+++ b/quartz/path.ts
@@ -60,8 +60,7 @@ export function relativeToRoot(slug: string, fp: string): string {
 }
 
 export function relative(src: string, dest: string): string {
-  return "./" + path.relative(src, dest)
-
+  return path.relative(src, dest)
 }
 
 export const QUARTZ = "quartz"
diff --git a/quartz/plugins/transformers/description.ts b/quartz/plugins/transformers/description.ts
index cc20769..3505b19 100644
--- a/quartz/plugins/transformers/description.ts
+++ b/quartz/plugins/transformers/description.ts
@@ -31,7 +31,9 @@ export const Description: QuartzTransformerPlugin<Partial<Options> | undefined>
             let sentenceIdx = 0
             const len = opts.descriptionLength
             while (finalDesc.length < len) {
-              finalDesc += sentences[sentenceIdx] + '.'
+              const sentence = sentences[sentenceIdx]
+              if (!sentence) break
+              finalDesc += sentence + '.'
               sentenceIdx++
             }
 
diff --git a/quartz/plugins/transformers/links.ts b/quartz/plugins/transformers/links.ts
index b8a800a..03c8d43 100644
--- a/quartz/plugins/transformers/links.ts
+++ b/quartz/plugins/transformers/links.ts
@@ -1,5 +1,5 @@
 import { QuartzTransformerPlugin } from "../types"
-import { clientSideSlug, relativeToRoot, slugify, trimPathSuffix } from "../../path"
+import { clientSideSlug, relative, relativeToRoot, slugify, trimPathSuffix } from "../../path"
 import path from "path"
 import { visit } from 'unist-util-visit'
 import isAbsoluteUrl from "is-absolute-url"
@@ -31,8 +31,7 @@ export const CrawlLinks: QuartzTransformerPlugin<Partial<Options> | undefined> =
           const transformLink = (target: string) => {
             const targetSlug = slugify(decodeURI(target).trim())
             if (opts.markdownLinkResolution === 'relative' && !path.isAbsolute(targetSlug)) {
-              // TODO
-              // return './' + relative(curSlug, targetSlug)
+              return './' + relative(curSlug, targetSlug)
             } else {
               return './' + relativeToRoot(curSlug, targetSlug)
             }