Chisle
The coding-agent plugin that bills 52% of a bare model across 20 live tasks. Terse persona + tool-output compressor + context diet.
翻訳待ち
Zero-dependency JavaScript library for interactive mind maps and org charts on the web. Top-down org-chart layout, typed nodes, cross-links, reorg diff, full CRUD API, PNG/SVG export.
翻訳待ち
開発ツールJavaScript · TypeScriptGitHub @icedsgオンライン所有者未確認
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Zero-dependency JS library for interactive mind maps and org charts: top-down org layout, typed nodes, cross-links, reorg diff, PNG/SVG export.
翻訳待ち
Loading the full README.
Read the full README ↗A standalone interactive mind map and org chart library for the web. Zero dependencies, no build step — drop in a single JS file and start building.
Live Demo & Docs → · samples: org chart · reorg diff · portfolio
fromJSON() / toJSON() for persistencelayout: 'orgchart' draws a top-down tree (manager above reports), switchable at runtime with setLayout()kind (person, company, team, role, project, idea) and meta (title, email, avatar, status...) give each card a colour, badge and subtitletoJSON()MindkeeperMap.diff(before, after) + highlightDiff() show who joined, left, moved or changednodeClick, nodeAdd, nodeUpdate, nodeDelete, nodeToggle, linkAdd, linkRemove<script src="https://cdn.jsdelivr.net/npm/mindkeeper-map/src/mindkeeper-map.js"></script>
npm install mindkeeper-map
<div id="map" style="width:100%; height:500px;"></div>
<script src="mindkeeper-map.js"></script>
<script>
const map = new MindkeeperMap('#map');
map.init({
topic: 'My Mind',
children: [
{ id: 'work', topic: 'Work', children: [
{ topic: 'Q3 launch' },
{ topic: 'Team retro' }
]},
{ id: 'personal', topic: 'Personal', children: [
{ topic: 'Morning run' },
{ topic: 'Reading list' }
]}
]
});
</script>
const map = new MindkeeperMap(selector, options?)
| Option | Default | Description |
|---|---|---|
layout | 'mindmap' | 'mindmap' (branches left/right of the root) or 'orgchart' (top-down) |
levelWidth | 240 | Horizontal spacing between depth levels (px) |
levelHeight | 110 | Org chart: vertical distance between levels (px) |
hSpacing | 24 | Org chart: gap between sibling subtrees (px) |
stackLeaves | 4 | Org chart: a manager with this many reports, all without reports of their own, lists them in a column (0 = never) |
vSpacing | 54 | Vertical spacing between siblings (px) |
linkStroke | 3 | Link line width (px) |
nodeBorder | 2.5 | Node border width (px) |
fontFamily | system-ui | Node label font |
.init(data) → thisRender the map from a tree object. Calls _setup() and re-fits the view.
.fromJSON(data) → thisAlias for .init(). Useful for re-loading saved state.
.toJSON() → objectExport the current tree as a plain JS object (same format as the input).
.getNode(id) → { id, topic, children: string[] } | nullReturn lightweight metadata for a node.
.addNode(parentId, { topic, id?, kind?, meta? }) → stringAdd a child to the given parent. Returns the new node's id.
.updateNode(id, { topic?, kind?, meta? }) → thisUpdate a node's label, kind or meta. The map re-renders automatically.
.deleteNode(id) → thisDelete a node and all its descendants. Throws if called on the root.
.insertBetween(parentId, childId, { topic, id? }) → stringInsert a new node between parentId and childId. The existing child becomes a child of the new node. Returns the new node's id.
Before: Root → Work
After: Root → Category → Work
.setLayout('mindmap' | 'orgchart') → thisSwitch layout and refit.
.collapse(id) / .expand(id) / .toggle(id) / .collapseAll() / .expandAll() → thisFold or open branches. Managers show a +/− toggle under the card; collapsed nodes are saved as collapsed: true.
.addLink(from, to, type?, label?) / .removeLink(from, to, type?) / .getLinks()Cross-links between any two nodes, drawn as dashed curves with a label (the label defaults to the type). A link whose end sits inside a collapsed branch is drawn to the nearest visible ancestor.
MindkeeperMap.diff(before, after) → diffStatic. Compares two trees by node id and returns { added, removed, moved, changed, links: { added, removed }, info } (info[id] gives the topic, old/new parent and changed fields).
.highlightDiff(diff) / .clearDiff() → thisRing the cards from a diff: green added, red removed, amber changed, dashed amber moved, with a legend listing removed names.
.fit() → thisFit the entire map into the container view.
.exportPNG(filename?) / .exportSVG(filename?)Download the full mindmap as a high-DPI PNG or vector SVG.
.on(event, handler) / .off(event, handler) → thisSubscribe / unsubscribe from events.
This is the beginning of the README. Read the rest at the original. Read the full README ↗