scrapbox-local-graph
実装
描画
データ
depth=2の場合に制限される
使い方
簡単な方法
code:sample.ts
import { setup } from "./mod.tsx";
import { Scrapbox } from "../scrapbox-jp%2Ftypes/userscript.ts";
declare const scrapbox: Scrapbox;
// 現状だとmobileでクラッシュする
if (!/mobile/i.test(navigator.userAgent)) {
const { open, close, isOpen } = setup();
scrapbox.PageMenu.addItem({
title: "toggle Local Graph",
onClick: () => { isOpen() ? close(): open(); },
});
}
ページAを開いたとき、以下のリンクは確実に表示できる
B
such that A→B or A←B
C
such that A→B→C or A→B←C or A←B→C
このうち、A→B or A←B or A→B←CのBとCは空リンクかどうかも確実に判定できる
A→B→C と A←B→CのCは、空リンクだと誤判定する可能性がある
興味を引いたグラフ構造
https://gyazo.com/bb88f722ea40ef4a9e52deba952dac2a
https://gyazo.com/a1676afcd2007d1ee6c47431fd48e538
https://gyazo.com/3698c47e162c6a569d50ecfed0937341
中身のないページでも構造がちゃんとしているものもある
https://gyazo.com/bfad43a7d8dbd52d89fd7b44eec97b41
実装
SVGの構築はなるべくPreactにやらせ、D3.jsはsimulationとzoomのみこなすようにしている
いろいろ無理があってバグっているところが1箇所あるが、概ね安定させられたとみていいだろう
hover時のanimationはなるべくCSS Animationで済ませた
code:template
scrapbox-local-graph-min
code:mod.js
@CODE@
code:mod.tsx