@edv4h/usketch-plugin-markdown-to-shape

中文文档
0.2.16发布于 2026/11/10MITTypeScriptES Module构建来源已验证近 30 天下载 2366
原始使用文档
文档目录5 节
  1. 仕組み
  2. 依存の向き(デカップリング)
  3. Mermaid フローチャートの分解
  4. エクスポート
  5. 非スコープ / 今後

@edv4h/usketch-plugin-markdown-to-shape

Markdown を複数の native shape に分解する uSketch プラグイン。「どの Markdown 構造をどの shape にするか」は変換レジストリに登録する方式(IoC)で、このプラグインは具体的な shape に一切依存しない。

仕組み

  1. ctx.markdownConverters(@edv4h/usketch-core が提供、PluginContext 経由)に converter を登録する:
    ctx.markdownConverters.register({
      id: "app:heading-to-text",
      nodeTypes: ["heading"],        // mdast のノード種別
      order: 0,                       // 高いほど優先、同点は後勝ち
      convert: (node, cctx) => [{ type: "text", text: /* ... */, fontSize: 28 }],
    });
    
  2. Control HUD の Action 「🧩 Markdown を図形に分解」(markdown shape を単一選択時のみ有効)を実行すると:
    • remark-parse + remark-gfm で source を mdast に parse。
    • top-level ブロックごとに登録 converter を解決(nodeTypes/match → order 最大 → 後勝ち)。
    • 未登録のブロックは markdown shape にフォールバック(生ソースを slice して保持するので、表・コード・mermaid もそのまま整形描画される)。
    • 生成 shape を縦フローで配置し、元 markdown shape を置き換える(1 操作で undo 可能)。

依存の向き(デカップリング)

  • このプラグインは @edv4h/usketch-shared のみに依存し、text / table などの shape プラグインを import しない。
  • 変換先は「登録する側」が持つ(例: apps/web の adapter が heading→text を登録)。将来 code/table 等の native shape を足すときも converter を登録するだけで、本体は無改変。
  • フォールバックの markdown shape は型文字列だけで生成するため、markdown-shape プラグインへのコード依存も無い。

Mermaid フローチャートの分解

mermaid の graph / flowchart(TD/LR 等)を、rectangle + text ノード と connector の編集可能な図に分解する converter を同梱(createMermaidFlowchartConverter)。app 側 adapter で登録して使う。

  • 自前パーサ + @dagrejs/dagre レイアウト(同期 なので converter は同期のまま)。
  • ctx.origin を起点に絶対配置。connector は node の id で接続するので、ノードを動かすと線も追従。
  • 非 flowchart の mermaid(sequence / gantt 等)や解析失敗は markdown shape にフォールバック(図としてそのまま描画)。
  • サブグラフ・スタイル定義・複雑なエッジ種別は v1 では簡略化。

「1 ブロック → 相互接続されたサブグラフ」を返せるよう、MarkdownShapeSpec は id/x/y を、MarkdownConverterContext は origin を持つ。単発 spec(見出し等)はこれらを省略でき、orchestrator が縦フロー枠に配置する。

エクスポート

  • createMarkdownToShapePlugin() — プラグイン本体。
  • createMermaidFlowchartConverter() — mermaid flowchart → 図分解 converter(app が登録)。
  • parseFlowchart(code) — mermaid flowchart 構文パーサ(純粋関数)。
  • convertMarkdownToShapes(opts) — source → 配置済み ShapeData[](オーケストレータ)。
  • parseMarkdown / topLevelBlocks / mdastText / nodeSource — converter 実装用の mdast ヘルパ。

非スコープ / 今後

  • 高さは v1 では推定(描画前は未確定)。measure ベース精緻化は後段。
  • code / table の native shape が無いため当面は markdown フォールバック(設計どおり)。
  • 段落内インライン装飾の分解は行わない(段落 = 1 text)。

版本与发布记录

@edv4h/usketch-plugin-markdown-to-shape 共发布 21 个版本,首次发布于 2026/07/17;过去 12 个月发布了 21 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.2.16latest2026/11/104 天前
0.2.152026/11/104 天前
0.2.142026/11/067 天前
0.2.132026/11/067 天前
0.2.122026/11/0310 天前
0.2.112026/10/2519 天前

关于 @edv4h/usketch-plugin-markdown-to-shape 的常见问题

如何安装 @edv4h/usketch-plugin-markdown-to-shape?

在项目目录运行 npm install @edv4h/usketch-plugin-markdown-to-shape,或使用 pnpm add / yarn add / bun add。

@edv4h/usketch-plugin-markdown-to-shape 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@edv4h/usketch-plugin-markdown-to-shape 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@edv4h/usketch-plugin-markdown-to-shape 可以商用吗?

@edv4h/usketch-plugin-markdown-to-shape 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@edv4h/usketch-plugin-markdown-to-shape 的下载量有多少?

根据 npm 官方下载统计,@edv4h/usketch-plugin-markdown-to-shape 在 2026/10/13 – 2026/11/11 这 30 天内被下载 2,366 次,日均约 79 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@edv4h/usketch-plugin-markdown-to-shape 还在维护吗?

最新版本 0.2.16 发布于 2026/11/10(4 天前);至今共发布 21 个版本,其中过去 12 个月发布了 21 个;首次发布于 2026/07/17。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。