Skip to content

Commit

Permalink
Merge branch 'v4' of https://github.com/jackyzha0/quartz into v4
Browse files Browse the repository at this point in the history
  • Loading branch information
VVoruganti committed Nov 20, 2023
2 parents 99e713d + 9a599ae commit b53d22c
Show file tree
Hide file tree
Showing 7 changed files with 33 additions and 26 deletions.
1 change: 1 addition & 0 deletions docs/features/breadcrumbs.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ Component.Breadcrumbs({
rootName: "Home", // name of first/root element
resolveFrontmatterTitle: true, // whether to resolve folder names through frontmatter titles
hideOnRoot: true, // whether to hide breadcrumbs on root `index.md` page
showCurrentPage: true, // wether to display the current page in the breadcrumbs
})
```

Expand Down
15 changes: 11 additions & 4 deletions quartz/components/Breadcrumbs.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,18 @@ interface BreadcrumbOptions {
* Wether to display breadcrumbs on root `index.md`
*/
hideOnRoot: boolean
/**
* Wether to display the current page in the breadcrumbs.
*/
showCurrentPage: boolean
}

const defaultOptions: BreadcrumbOptions = {
spacerSymbol: "❯",
rootName: "Home",
resolveFrontmatterTitle: true,
hideOnRoot: true,
showCurrentPage: true,
}

function formatCrumb(displayName: string, baseSlug: FullSlug, currentSlug: SimpleSlug): CrumbData {
Expand Down Expand Up @@ -95,10 +100,12 @@ export default ((opts?: Partial<BreadcrumbOptions>) => {
}

// Add current file to crumb (can directly use frontmatter title)
crumbs.push({
displayName: fileData.frontmatter!.title,
path: "",
})
if (options.showCurrentPage) {
crumbs.push({
displayName: fileData.frontmatter!.title,
path: "",
})
}
}
return (
<nav class={`breadcrumb-container ${displayClass ?? ""}`} aria-label="breadcrumbs">
Expand Down
4 changes: 2 additions & 2 deletions quartz/components/renderPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -104,15 +104,15 @@ export function renderPage(
break
}

if (startIdx) {
if (startIdx !== undefined) {
endIdx = i
} else if (el.properties?.id === blockRef) {
startIdx = i
}
}
}

if (!startIdx) {
if (startIdx === undefined) {
return
}

Expand Down
17 changes: 1 addition & 16 deletions quartz/components/scripts/popover.inline.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,5 @@
import { computePosition, flip, inline, shift } from "@floating-ui/dom"

// from micromorph/src/utils.ts
// https://github.com/natemoo-re/micromorph/blob/main/src/utils.ts#L5
export function normalizeRelativeURLs(el: Element | Document, destination: string | URL) {
const rebase = (el: Element, attr: string, newBase: string | URL) => {
const rebased = new URL(el.getAttribute(attr)!, newBase)
el.setAttribute(attr, rebased.pathname + rebased.hash)
}

el.querySelectorAll('[href^="./"], [href^="../"]').forEach((item) =>
rebase(item, "href", destination),
)
el.querySelectorAll('[src^="./"], [src^="../"]').forEach((item) =>
rebase(item, "src", destination),
)
}
import { normalizeRelativeURLs } from "../../util/path"

const p = new DOMParser()
async function mouseEnterHandler(
Expand Down
4 changes: 1 addition & 3 deletions quartz/components/scripts/spa.inline.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
import micromorph from "micromorph"
import { FullSlug, RelativeURL, getFullSlug } from "../../util/path"
import { normalizeRelativeURLs } from "./popover.inline"
import { FullSlug, RelativeURL, getFullSlug, normalizeRelativeURLs } from "../../util/path"

// adapted from `micromorph`
// https://github.com/natemoo-re/micromorph

const NODE_TYPE_ELEMENT = 1
let announcer = document.createElement("route-announcer")
const isElement = (target: EventTarget | null): target is Element =>
Expand Down
2 changes: 1 addition & 1 deletion quartz/plugins/transformers/ofm.ts
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin<Partial<Options>
const fp = rawFp ?? ""
const anchor = rawHeader?.trim().replace(/^#+/, "")
const displayAnchor = anchor ? `#${slugAnchor(anchor)}` : ""
const displayAlias = rawAlias ?? anchor ?? ""
const displayAlias = rawAlias ?? rawHeader?.replace("#", "|") ?? ""
const embedDisplay = value.startsWith("!") ? "!" : ""
return `${embedDisplay}[[${fp}${displayAnchor}${displayAlias}]]`
})
Expand Down
16 changes: 16 additions & 0 deletions quartz/util/path.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,22 @@ export function transformInternalLink(link: string): RelativeURL {
return res
}

// from micromorph/src/utils.ts
// https://github.com/natemoo-re/micromorph/blob/main/src/utils.ts#L5
export function normalizeRelativeURLs(el: Element | Document, destination: string | URL) {
const rebase = (el: Element, attr: string, newBase: string | URL) => {
const rebased = new URL(el.getAttribute(attr)!, newBase)
el.setAttribute(attr, rebased.pathname + rebased.hash)
}

el.querySelectorAll('[href^="./"], [href^="../"]').forEach((item) =>
rebase(item, "href", destination),
)
el.querySelectorAll('[src^="./"], [src^="../"]').forEach((item) =>
rebase(item, "src", destination),
)
}

// resolve /a/b/c to ../..
export function pathToRoot(slug: FullSlug): RelativeURL {
let rootPath = slug
Expand Down

0 comments on commit b53d22c

Please sign in to comment.