generated from Enveloppe/Enveloppe-Quartz
-
Notifications
You must be signed in to change notification settings - Fork 0
/
quartz.layout.ts
136 lines (126 loc) · 4.37 KB
/
quartz.layout.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
import { PageLayout, SharedLayout } from "./quartz/cfg"
import * as Component from "./quartz/components"
import { IconFolderOptions } from "./quartz/plugins/components/FileIcons";
// components shared across all pages
const iconsOptions: IconFolderOptions = {
rootIconFolder: "quartz/static/icons",
default: {
file: "file",
},
};
export const sharedPageComponents: SharedLayout = {
head: Component.Head(),
header: [
Component.MobileOnly(
Component.ExplorerBurger({
folderDefaultState: "open",
folderClickBehavior: "collapse",// link, collapse
iconSettings: iconsOptions,
}),
),
Component.MobileOnly(Component.PageTitle()),
Component.MobileOnly(Component.Spacer()),
Component.Search(),
Component.Darkmode(),
],
footer: Component.Footer({
links: {
"Email": "mailto:yifuding.twp@gmail.com",
"LinkedIn": "https://www.linkedin.com/in/yifu-ding/",
"Instagram": "https://www.instagram.com/yifu_ding_/",
},
}),
}
// components for pages that display a single page (e.g. a single note)
export const defaultContentPageLayout: PageLayout = {
beforeBody: [
Component.Breadcrumbs(),
Component.ArticleTitle(iconsOptions),
Component.ContentMeta({ showReadingTime: true }),
Component.TagList(),
],
left: [
Component.DesktopOnly(Component.PageTitle()),
Component.DesktopOnly(
Component.ExplorerBurger({
folderDefaultState: "collapsed",
folderClickBehavior: "collapse",// link, collapse
useSavedState: true,
title: "",
iconSettings: iconsOptions,
}),
),
],
right: [
Component.DesktopOnly(Component.Graph()),
Component.TableOfContents(),
Component.DesktopOnly(Component.Backlinks()),
],
}
// components for pages that display lists of pages (e.g. tags or folders)
export const defaultListPageLayout: PageLayout = {
beforeBody: defaultContentPageLayout.beforeBody,
left: defaultContentPageLayout.left,
right: [],
}
// Graph
Component.Graph({
localGraph: {
drag: true, // whether to allow panning the view around
zoom: true, // whether to allow zooming in and out
depth: 2, // how many hops of notes to display
scale: 1.1, // default view scale
repelForce: 0.5, // how much nodes should repel each other
centerForce: 0.3, // how much force to use when trying to center the nodes
linkDistance: 30, // how long should the links be by default?
fontSize: 0.6, // what size should the node labels be?
opacityScale: 1, // how quickly do we fade out the labels when zooming out?
removeTags: [], // what tags to remove from the graph
showTags: true, // whether to show tags in the graph
},
globalGraph: {
drag: true,
zoom: true,
depth: -1,
scale: 0.9,
repelForce: 0.5,
centerForce: 0.3,
linkDistance: 30,
fontSize: 0.6,
opacityScale: 1,
removeTags: [], // what tags to remove from the graph
showTags: true, // whether to show tags in the graph
},
})
// Folder Tree Sort
Component.Explorer({
sortFn: (a, b) => {
// Determine if the nodes match their parent's name
const aMatchesParent = a.fullPath.endsWith(`/${a.name}/${a.name}`);
const bMatchesParent = b.fullPath.endsWith(`/${b.name}/${b.name}`);
// Prioritize nodes matching their parent's name
if (aMatchesParent && !bMatchesParent) {
return -1;
}
if (!aMatchesParent && bMatchesParent) {
return 1;
}
// Compare display names if both or neither match their parent's name
return a.displayName.localeCompare(b.displayName, undefined, {
numeric: true,
sensitivity: "base",
});
},
mapFn: (node) => {
// Don't change the name of the root node
if (node.depth > 0) {
// Set emoji for file/folder
if (node.file) {
node.displayName = "📄 " + node.displayName;
} else {
node.displayName = "📁 " + node.displayName;
}
}
},
order: ["filter", "sort", "map"],
})