Plugins implementation
Extend the capabilities of the editor with external modules
Possible plugins:
- Tasks ✓
- Modules ✓
- ~~Differences~~ Version control
- Context menu ✓ a. duplicate node ✓
- Node/Control rendering
- Adding nodes with the help of gestures
- Voice control (adding nodes)
- Code generation ✓
- Sound accompaniment
- Profiling ✓
- Nodes filtering
- Minimap ✓
- Arrange nodes #129 #90 ✓
- Custom blocks (frames, labels) ✓
- Groups ✓
- History (undo/redo) ✓
- Connect intermediate node over exist connection #2
- Flow highlight
- Selection ✓
Write your ideas and suggestions!
Please vote for the plugins that you would like to see
+1 for ability to render controls with React(5) +1 for code generation(8)
+1 For #12 minimap And #13 arrange nodes
Both would be great for better managing the ui with larger graphs.
#13 arrange nodes #Fit on screen
✓ Minimap #132
+1 Node/Control Rendering with vue.js
✓ Vue.js render #169
Code generation is a big one for me, would love to see this 👍
@JMidd91 this is exactly what is planned next
@JMidd91 @stemsmit there is a basic version of Code generation.
It working with simple data-flow (no modules and tasks). I still have to figure out how to do this multi lang and how to generate code more correctly
Has anyone created a reactjs plugin. I don't know what in the hell I'm doing when trying to create one.
@Ni55aN would it be possible to get some documentation in rete/vue-render-plugin such that we can get an idea of how you're making the render plugins?
Also is there a standalone Vue example? I saw you reference this in #187 but it seems like it would require building the entire rete.js.org website in order to play around with it.
you can refer to this implementation: https://github.com/retejs/vue-render-plugin/blob/master/src/index.js
What are required to render nodes and controls:
- listen to
rendernodeandrendercontrol - put a HTML elements to
elparameter - call a
bindSocketandbindControlfor rendered containers for sockets and controls
For example:
editor.on('rendernode', ({ el, node, component, bindSocket, bindControl }) => {
if (component.render && component.render !== 'react') return;
ReactDOM.render(<div>{Array.from(this.node.inputs.values()).map(inp => (
<Socket bindSocket={bindSocket}/>
))}</div>, el);
});
editor.on('rendercontrol', ({ el, control }) => {
if (control.render && control.render !== 'react') return;
control._vue = createControl(editor, { el, control });
control.update = () => update(control)
});
The Socket components should to call a bindSocket in componentDidMount or something else: https://github.com/retejs/rete/blob/dc8d58dd886ab684a354a292862aadd8e9940c9f/src/view/node.js#L36
Alight-render plugin looks much easier: https://github.com/retejs/alight-render-plugin/blob/master/src/index.js
- duplicate node
- undo/redo
- selection box to select multiple nodes and reposition and/or duplicate
selection box to select multiple nodes and reposition and/or duplicate
Ctrl + click on the node allows selecting multiple nodes and translate them
- Double-clicking on a node to display a panel that allows editing node's internals (node's published internal attributes).
- Put a node in between a connection of existing nodes by dragging the new node on top of the line that links given nodes
- Documentation on how to render nodes and controls
- Improve link disconnection (at least in Chrome more often than not, I cannot disconnect a link.
@DiegoBM
Improve link disconnection
How exactly it looks like?
Double-clicking on a node to display a panel that allows editing node's internals (node's published internal attributes).
Perhaps this depends on your Node's implementation
@Ni55aN
How exactly it looks like?
At the moment, when I try to un-link a connection by dragging-out from the end and clicking to release, the link continues being attached to the mouse. It doesn't happen all the time, but to me at least it happens around 90% or more of the time with the website demos. (Maybe I don't know how to un-link with the library and I need to press an extra key like "r" or something, but if that's the case the demos don't mention it and it's not intuitive enough to know without mention)
Perhaps this depends on your Node's implementation
Maybe, still would be nice to have a way to edit internal properties that are not "connectable"
@DiegoBM do you use a latest versions? When I click anywhere with the selected connection, it disappears.
@Ni55aN I was just playing around with the demos in your website to see if I could make use of it. Didn't try the latest version no.
@DiegoBM rete.js.org hasn't latest version of Rete. I'll update it
Thank you @Ni55aN I guess that makes valid only two of my suggestions:
- Put a node in between a connection of existing nodes by dragging the new node on top of the line that links given nodes
- Documentation on how to render nodes and controls
@mikecowgill @christian-alejandre-mllrdev https://github.com/retejs/auto-arrange-plugin/issues/1#issuecomment-445540667
+1 React Rendering +1 History
+1 React +0.5 History
@devspacenine @jeffsenn rete-history-plugin is released
https://github.com/retejs/history-plugin
+1 React
Angular rendering, Disable a node or part of the Flow ( not delete it ) .
Are there any automatic layout plugins?
@m1sta what do you mean?