mirror of
https://github.com/quartz-community/graph.git
synced 2026-07-22 02:50:25 +00:00
No description
Pre-built output is now committed to the repository so that Quartz can skip the build step during plugin installation. The prepare script is removed to prevent redundant builds when installing from npm/git. |
||
|---|---|---|
| .github/workflows | ||
| dist | ||
| src | ||
| test | ||
| .eslintrc.json | ||
| .gitignore | ||
| .prettierrc | ||
| CHANGELOG.md | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
| tsup.config.ts | ||
| vitest.config.ts | ||
@quartz-community/graph
The Graph View component for Quartz - visualize your digital garden as an interactive network graph.
Features
- 🕸️ Interactive Network Graph - Visualize connections between your pages
- 🎨 Local & Global Views - See connections to current page or explore the entire graph
- ⚡ Smooth Animations - Built with D3 force simulation and PixiJS rendering
- 🏷️ Tag Support - Visualize tags as nodes in the graph
- 🖱️ Interactive Controls - Drag, zoom, and pan around the graph
- 💾 Visited Tracking - Highlights pages you've already visited
- ⌨️ Keyboard Shortcuts - Press
Ctrl/Cmd + Gto toggle the global graph
Installation
npx quartz plugin add github:quartz-community/graph
Usage
plugins:
- source: github:quartz-community/graph
enabled: true
layout:
position: right
priority: 10
For advanced use cases, you can override in TypeScript:
import * as ExternalPlugin from "./.quartz/plugins";
ExternalPlugin.Graph({
localGraph: {
drag: true,
zoom: true,
depth: 1,
},
globalGraph: {
drag: true,
zoom: true,
depth: -1,
},
});
Configuration Options
interface D3Config {
/** Enable node dragging */
drag: boolean;
/** Enable zooming */
zoom: boolean;
/** Depth of connections to show (-1 for all) */
depth: number;
/** Graph scale factor */
scale: number;
/** Force repelling strength */
repelForce: number;
/** Center force strength */
centerForce: number;
/** Distance between linked nodes */
linkDistance: number;
/** Label font size */
fontSize: number;
/** Opacity multiplier */
opacityScale: number;
/** Tags to exclude */
removeTags: string[];
/** Show tags as nodes */
showTags: boolean;
/** Dim non-hovered nodes on hover */
focusOnHover?: boolean;
/** Enable radial layout */
enableRadial?: boolean;
}
interface GraphOptions {
localGraph?: Partial<D3Config>; // Local page graph config
globalGraph?: Partial<D3Config>; // Global graph config
}
Default Behavior
Local Graph
By default, the local graph:
- Shows 1 level of connections (direct links only)
- Dragging enabled
- Zoom enabled
- Tags shown as nodes
- 250px height
- Displays on the right side of pages
Global Graph
By default, the global graph:
- Shows all connections (depth: -1)
- Opens in fullscreen modal when clicking the graph icon
- Keyboard shortcut:
Ctrl/Cmd + G - Focus on hover enabled (dims non-connected nodes)
- Radial layout enabled
- Click outside or press Escape to close
How It Works
The Graph component fetches connection data from /static/contentIndex.json (generated by the ContentIndex emitter) and renders it using:
- D3 for physics simulation (force-directed layout)
- PixiJS for high-performance WebGL rendering
External libraries are loaded from CDN when the graph is first rendered.
[!info] Graph View requires the
ContentIndexemitter plugin to be present in your Quartz configuration.
Development
This is a first-party Quartz community plugin. It serves as both:
- A production-ready Graph View component
- A reference implementation for building Quartz community plugins
To build locally:
npm install
npm run build
The prepare script automatically builds during installation.
Documentation
See the Quartz documentation for more information.
License
MIT