diff --git a/quartz/components/scripts/explorer.inline.ts b/quartz/components/scripts/explorer.inline.ts index e9c0a09..b431c53 100644 --- a/quartz/components/scripts/explorer.inline.ts +++ b/quartz/components/scripts/explorer.inline.ts @@ -134,9 +134,9 @@ function createFolderNode( } for (const child of node.children) { - const childNode = child.data - ? createFileNode(currentSlug, child) - : createFolderNode(currentSlug, child, opts) + const childNode = child.isFolder + ? createFolderNode(currentSlug, child, opts) + : createFileNode(currentSlug, child) ul.appendChild(childNode) } diff --git a/quartz/util/fileTrie.test.ts b/quartz/util/fileTrie.test.ts index a4481ed..a333397 100644 --- a/quartz/util/fileTrie.test.ts +++ b/quartz/util/fileTrie.test.ts @@ -1,6 +1,7 @@ import test, { describe, beforeEach } from "node:test" import assert from "node:assert" import { FileTrieNode } from "./fileTrie" +import { FullSlug } from "./path" interface TestData { title: string @@ -192,6 +193,42 @@ describe("FileTrie", () => { }) }) + describe("fromEntries", () => { + test("nested", () => { + const trie = FileTrieNode.fromEntries([ + ["index" as FullSlug, { title: "Root", slug: "index", filePath: "index.md" }], + [ + "folder/file1" as FullSlug, + { title: "File 1", slug: "folder/file1", filePath: "folder/file1.md" }, + ], + [ + "folder/index" as FullSlug, + { title: "Folder Index", slug: "folder/index", filePath: "folder/index.md" }, + ], + [ + "folder/file2" as FullSlug, + { title: "File 2", slug: "folder/file2", filePath: "folder/file2.md" }, + ], + [ + "folder/folder2/index" as FullSlug, + { + title: "Subfolder Index", + slug: "folder/folder2/index", + filePath: "folder/folder2/index.md", + }, + ], + ]) + + assert.strictEqual(trie.children.length, 1) + assert.strictEqual(trie.children[0].slug, "folder/index") + assert.strictEqual(trie.children[0].children.length, 3) + assert.strictEqual(trie.children[0].children[0].slug, "folder/file1") + assert.strictEqual(trie.children[0].children[1].slug, "folder/file2") + assert.strictEqual(trie.children[0].children[2].slug, "folder/folder2/index") + assert.strictEqual(trie.children[0].children[2].children.length, 0) + }) + }) + describe("getFolderPaths", () => { test("should return all folder paths", () => { const data1 = {