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