forked from rothsandro/eleventy-notes
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp-config.js
97 lines (91 loc) · 2 KB
/
app-config.js
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
// @ts-check
/**
* @typedef {import('./app-config.schema').AppConfig} AppConfig
* @typedef {import('./app-config.schema').NotesQuery} NotesQuery
* @typedef {import("./lib/modules/dynamic-content/query-runner").QueryDef} QueryDef
*/
module.exports = {
/**
* @param {AppConfig} config
* @returns {AppConfig}
*/
defineConfig(config) {
return applyDefaults(config);
},
/**
* Creates a query definition for notes.
* @param {NotesQuery} query
* @returns {QueryDef}
*/
createNotesQuery(query = {}) {
return {
sort: ["data.sort", "title"],
tree: query.tree ? query.tree : false,
filter: [
["filePathStem", "isNotEqual", "/index"],
...(query.pattern ? [["filePathStem", "matches", query.pattern]] : []),
...(query.tags ? [["tags", "includesAllOf", query.tags]] : []),
],
};
},
};
/**
* Merges the custom config with the default config.
* @param {AppConfig} custom
* @returns {AppConfig}
*/
function applyDefaults(custom) {
return {
title: "Notes",
description: "Notes app",
lang: "en",
...custom,
theme: {
color: "sky",
...custom.theme,
},
customProperties: {
properties: [],
...custom.customProperties,
},
sidebar: {
links: [],
sections: [
{
label: "Notes",
groups: [
{
query: {
sort: ["data.sort", "title"],
filter: [["filePathStem", "isNotEqual", "/index"]],
},
},
],
},
],
...custom.sidebar,
},
panel: {
tableOfContents: true,
customProperties: true,
tags: true,
incomingLinks: true,
outgoingLinks: true,
externalLinks: true,
...custom.panel,
},
wikilinks: {
autoLabel: "ref",
anchorLabel: "none",
...custom.wikilinks,
},
tags: {
map: {},
...custom.tags,
},
notes: {
pathPrefix: "/n",
...custom.notes,
},
};
}