From 31d16fbd2c82380af586e458b2c1ff29b90b53ae Mon Sep 17 00:00:00 2001
From: Ben Schlegel <ben5.schlegel@gmail.com>
Date: Sat, 16 Sep 2023 17:18:59 +0000
Subject: [PATCH] feat(explorer): integrate filter option
---
quartz/components/ExplorerNode.tsx | 5 +++++
quartz/components/Explorer.tsx | 5 +++++
2 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/quartz/components/Explorer.tsx b/quartz/components/Explorer.tsx
index ee0f96f..efc9f6a 100644
--- a/quartz/components/Explorer.tsx
+++ b/quartz/components/Explorer.tsx
@@ -35,6 +35,11 @@
// Sort tree (folders first, then files (alphabetic))
fileTree.sort(opts.sortFn!)
+ // If provided, apply filter function to fileTree
+ if (opts.filterFn) {
+ fileTree.filter(opts.filterFn)
+ }
+
// Get all folders of tree. Initialize with collapsed state
const folders = fileTree.getFolderPaths(opts.folderDefaultState === "collapsed")
diff --git a/quartz/components/ExplorerNode.tsx b/quartz/components/ExplorerNode.tsx
index d962425..5cf3f01 100644
--- a/quartz/components/ExplorerNode.tsx
+++ b/quartz/components/ExplorerNode.tsx
@@ -8,6 +8,7 @@
folderClickBehavior: "collapse" | "link"
useSavedState: boolean
sortFn: (a: FileNode, b: FileNode) => number
+ filterFn?: (node: FileNode) => boolean
}
type DataWrapper = {
@@ -66,6 +67,10 @@
this.children.forEach((e) => e.print(depth + 1))
}
+ /**
+ * Filter FileNode tree. Behaves similar to `Array.prototype.filter()`, but modifies tree in place
+ * @param filterFn function to filter tree with
+ */
filter(filterFn: (node: FileNode) => boolean) {
const filteredNodes: FileNode[] = []
--
Gitblit v1.10.0