Jacky Zhao
2024-01-01 b33f13ccaf4ec14a94ee0ee467dda04cf4981d00
quartz/components/Graph.tsx
@@ -1,4 +1,4 @@
import { QuartzComponentConstructor } from "./types"
import { QuartzComponentConstructor, QuartzComponentProps } from "./types"
// @ts-ignore
import script from "./scripts/graph.inline"
import style from "./styles/graph.scss"
@@ -13,6 +13,8 @@
  linkDistance: number
  fontSize: number
  opacityScale: number
  removeTags: string[]
  showTags: boolean
}
interface GraphOptions {
@@ -31,6 +33,8 @@
    linkDistance: 30,
    fontSize: 0.6,
    opacityScale: 1,
    showTags: true,
    removeTags: [],
  },
  globalGraph: {
    drag: true,
@@ -42,15 +46,17 @@
    linkDistance: 30,
    fontSize: 0.6,
    opacityScale: 1,
    showTags: true,
    removeTags: [],
  },
}
export default ((opts?: GraphOptions) => {
  function Graph() {
    const localGraph = { ...defaultOptions.localGraph, ...opts?.localGraph, }
    const globalGraph = { ...defaultOptions.globalGraph, ...opts?.globalGraph, }
  function Graph({ displayClass }: QuartzComponentProps) {
    const localGraph = { ...defaultOptions.localGraph, ...opts?.localGraph }
    const globalGraph = { ...defaultOptions.globalGraph, ...opts?.globalGraph }
    return (
      <div class="graph">
      <div class={`graph ${displayClass ?? ""}`}>
        <h3>Graph View</h3>
        <div class="graph-outer">
          <div id="graph-container" data-cfg={JSON.stringify(localGraph)}></div>