npm package: @sroussey/ngraph
Description: A blender-style node editor built on xyflow
Author: Clark McCauley
Latest version: 0.3.16

![](./assets/ngraph-banner.png)

A Blender-style node editor built on [xyflow](https://github.com/xyflow/xyflow). Try it out in [Storybook](https://clarkmcc.github.io/ngraph/) or checkout the getting started [CodeSandbox](https://codesandbox.io/p/sandbox/ngraph-example-xst5gl?layout=%257B%2522sidebarPanel%2522%253A%2522EXPLORER%2522%252C%2522rootPanelGroup%2522%253A%257B%2522direction%2522%253A%2522horizontal%2522%252C%2522contentType%2522%253A%2522UNKNOWN%2522%252C%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522id%2522%253A%2522ROOT_LAYOUT%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522UNKNOWN%2522%252C%2522direction%2522%253A%2522vertical%2522%252C%2522id%2522%253A%2522clrcmtycc00063b6jzvptx4ag%2522%252C%2522sizes%2522%253A%255B100%252C0%255D%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522EDITOR%2522%252C%2522direction%2522%253A%2522horizontal%2522%252C%2522id%2522%253A%2522EDITOR%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522EDITOR%2522%252C%2522id%2522%253A%2522clrcmtycc00023b6j23ou3m6q%2522%257D%255D%257D%252C%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522SHELLS%2522%252C%2522direction%2522%253A%2522horizontal%2522%252C%2522id%2522%253A%2522SHELLS%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522SHELLS%2522%252C%2522id%2522%253A%2522clrcmtycc00033b6jjdpmq85q%2522%257D%255D%252C%2522sizes%2522%253A%255B100%255D%257D%255D%257D%252C%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522DEVTOOLS%2522%252C%2522direction%2522%253A%2522vertical%2522%252C%2522id%2522%253A%2522DEVTOOLS%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522DEVTOOLS%2522%252C%2522id%2522%253A%2522clrcmtycc00053b6jw9mwz96t%2522%257D%255D%252C%2522sizes%2522%253A%255B100%255D%257D%255D%252C%2522sizes%2522%253A%255B50%252C50%255D%257D%252C%2522tabbedPanels%2522%253A%257B%2522clrcmtycc00023b6j23ou3m6q%2522%253A%257B%2522tabs%2522%253A%255B%257B%2522id%2522%253A%2522clrcmtycc00013b6ju1878nh7%2522%252C%2522mode%2522%253A%2522permanent%2522%252C%2522type%2522%253A%2522FILE%2522%252C%2522filepath%2522%253A%2522%252Fpublic%252Findex.html%2522%252C%2522state%2522%253A%2522IDLE%2522%257D%252C%257B%2522id%2522%253A%2522clrcorw2n00023b6jzpv9w2ok%2522%252C%2522mode%2522%253A%2522permanent%2522%252C%2522type%2522%253A%2522FILE%2522%252C%2522initialSelections%2522%253A%255B%257B%2522startLineNumber%2522%253A20%252C%2522startColumn%2522%253A26%252C%2522endLineNumber%2522%253A20%252C%2522endColumn%2522%253A26%257D%255D%252C%2522filepath%2522%253A%2522%252Fsrc%252FApp.tsx%2522%252C%2522state%2522%253A%2522IDLE%2522%257D%255D%252C%2522id%2522%253A%2522clrcmtycc00023b6j23ou3m6q%2522%252C%2522activeTabId%2522%253A%2522clrcorw2n00023b6jzpv9w2ok%2522%257D%252C%2522clrcmtycc00053b6jw9mwz96t%2522%253A%257B%2522tabs%2522%253A%255B%257B%2522id%2522%253A%2522clrcmtycc00043b6j23ig61o6%2522%252C%2522mode%2522%253A%2522permanent%2522%252C%2522type%2522%253A%2522UNASSIGNED_PORT%2522%252C%2522port%2522%253A0%252C%2522path%2522%253A%2522%252F%2522%257D%255D%252C%2522id%2522%253A%2522clrcmtycc00053b6jw9mwz96t%2522%252C%2522activeTabId%2522%253A%2522clrcmtycc00043b6j23ig61o6%2522%257D%252C%2522clrcmtycc00033b6jjdpmq85q%2522%253A%257B%2522tabs%2522%253A%255B%255D%252C%2522id%2522%253A%2522clrcmtycc00033b6jjdpmq85q%2522%257D%257D%252C%2522showDevtools%2522%253Atrue%252C%2522showShells%2522%253Afalse%252C%2522showSidebar%2522%253Atrue%252C%2522sidebarPanelSize%2522%253A15%257D).

_Note: This project is still in development and the API is likely to change._ 

## Features
* Declarative JSON-based types, inputs, and nodes.
* Custom node and input types using React components when the declarative approach is insufficient.
* Color-coded node groups, value types, and connections.
* Collapsable nodes.
* Copy and paste nodes and connections.
* Many input types supported including text input, checkboxes, button groups, and select dropdowns.
* Multiple socket shapes supported including square, circle, diamond, and diamond with a dot (similar to Blender).
* Property-as-inputs allow you to set the value directly using an input, or connect it to the output of another node.
* Built-in support for Dagre layout engine.

## Getting Started

```
npm install @xyflow/react @clarkmcc/ngraph 
```

## Credits
The design for this project is inspired almost entirely by the [roman01la/threegn](https://github.com/roman01la/threegn) (now archived).