From 9cefcd0dd1a503c727c8bbb2deb1b631329b3a42 Mon Sep 17 00:00:00 2001
From: Jacky Zhao <j.zhao2k19@gmail.com>
Date: Fri, 20 Sep 2024 22:48:14 +0000
Subject: [PATCH] Revert "perf: eagerly compute explorer nodes to avoid re-render in memoized value"

---
 quartz/components/Explorer.tsx |   76 ++++++++++++++++++--------------------
 1 files changed, 36 insertions(+), 40 deletions(-)

diff --git a/quartz/components/Explorer.tsx b/quartz/components/Explorer.tsx
index df876ab..ec7c48e 100644
--- a/quartz/components/Explorer.tsx
+++ b/quartz/components/Explorer.tsx
@@ -7,7 +7,6 @@
 import { QuartzPluginData } from "../plugins/vfile"
 import { classNames } from "../util/lang"
 import { i18n } from "../i18n"
-import { VNode } from "preact"
 
 // Options interface defined in `ExplorerNode` to avoid circular dependency
 const defaultOptions = {
@@ -45,7 +44,6 @@
   // memoized
   let fileTree: FileNode
   let jsonTree: string
-  let component: VNode
   let lastBuildId: string = ""
 
   function constructFileTree(allFiles: QuartzPluginData[]) {
@@ -84,46 +82,44 @@
     if (ctx.buildId !== lastBuildId) {
       lastBuildId = ctx.buildId
       constructFileTree(allFiles)
-      const tree = ExplorerNode({ node: fileTree, opts, fileData })
-      component = (
-        <div class={classNames(displayClass, "explorer")}>
-          <button
-            type="button"
-            id="explorer"
-            data-behavior={opts.folderClickBehavior}
-            data-collapsed={opts.folderDefaultState}
-            data-savestate={opts.useSavedState}
-            data-tree={jsonTree}
-            aria-controls="explorer-content"
-            aria-expanded={opts.folderDefaultState === "open"}
-          >
-            <h2>{opts.title ?? i18n(cfg.locale).components.explorer.title}</h2>
-            <svg
-              xmlns="http://www.w3.org/2000/svg"
-              width="14"
-              height="14"
-              viewBox="5 8 14 8"
-              fill="none"
-              stroke="currentColor"
-              stroke-width="2"
-              stroke-linecap="round"
-              stroke-linejoin="round"
-              class="fold"
-            >
-              <polyline points="6 9 12 15 18 9"></polyline>
-            </svg>
-          </button>
-          <div id="explorer-content">
-            <ul class="overflow" id="explorer-ul">
-              {tree}
-              <li id="explorer-end" />
-            </ul>
-          </div>
-        </div>
-      )
     }
 
-    return component
+    return (
+      <div class={classNames(displayClass, "explorer")}>
+        <button
+          type="button"
+          id="explorer"
+          data-behavior={opts.folderClickBehavior}
+          data-collapsed={opts.folderDefaultState}
+          data-savestate={opts.useSavedState}
+          data-tree={jsonTree}
+          aria-controls="explorer-content"
+          aria-expanded={opts.folderDefaultState === "open"}
+        >
+          <h2>{opts.title ?? i18n(cfg.locale).components.explorer.title}</h2>
+          <svg
+            xmlns="http://www.w3.org/2000/svg"
+            width="14"
+            height="14"
+            viewBox="5 8 14 8"
+            fill="none"
+            stroke="currentColor"
+            stroke-width="2"
+            stroke-linecap="round"
+            stroke-linejoin="round"
+            class="fold"
+          >
+            <polyline points="6 9 12 15 18 9"></polyline>
+          </svg>
+        </button>
+        <div id="explorer-content">
+          <ul class="overflow" id="explorer-ul">
+            <ExplorerNode node={fileTree} opts={opts} fileData={fileData} />
+            <li id="explorer-end" />
+          </ul>
+        </div>
+      </div>
+    )
   }
 
   Explorer.css = explorerStyle

--
Gitblit v1.10.0