kabirgh
2024-02-19 a67a8d7aa9da06d8f87d0f48bac630728a4ea394
feat: implement getDependencyGraph for TagPage (#872)

* feat: implement getDependencyGraph for TagPage

* Only add file to dg if it has at least 1 tag
1 files modified
23 ■■■■ changed files
quartz/plugins/emitters/tagPage.tsx 23 ●●●● patch | view | raw | blame | history
quartz/plugins/emitters/tagPage.tsx
@@ -35,9 +35,26 @@
    getQuartzComponents() {
      return [Head, Header, Body, ...header, ...beforeBody, pageBody, ...left, ...right, Footer]
    },
    async getDependencyGraph(ctx, _content, _resources) {
      // TODO implement
      return new DepGraph<FilePath>()
    async getDependencyGraph(ctx, content, _resources) {
      const graph = new DepGraph<FilePath>()
      for (const [_tree, file] of content) {
        const sourcePath = file.data.filePath!
        const tags = (file.data.frontmatter?.tags ?? []).flatMap(getAllSegmentPrefixes)
        // if the file has at least one tag, it is used in the tag index page
        if (tags.length > 0) {
          tags.push("index")
        }
        for (const tag of tags) {
          graph.addEdge(
            sourcePath,
            joinSegments(ctx.argv.output, "tags", tag + ".html") as FilePath,
          )
        }
      }
      return graph
    },
    async emit(ctx, content, resources): Promise<FilePath[]> {
      const fps: FilePath[] = []