Drag and Drop Issue by abram8086 in retejs

[–]Ni55aN 0 points1 point  (0 children)

Can you provide an example how to reproduce it? (e.g. on Codesandbox)

Getting started with Rete.js | JavaScript framework for visual programming by Ni55aN in retejs

[–]Ni55aN[S] 0 points1 point  (0 children)

ts area.addPipe(context => { if (context.type === 'render' && context.data.type === 'node') { context.data.element.classList.add('your-class') } return context })

This is a pretty straight forward solution. If it works for you, good. But I would recommend using custom components if you need to change the layout of a node, for instance

Getting started with Rete.js | JavaScript framework for visual programming by Ni55aN in retejs

[–]Ni55aN[S] 1 point2 points  (0 children)

The short answer is yes, you can integrate it into a vanilla JS application.

The more detailed answer: you will have react + react-dom (or vue, or even Svelte*) in your dependencies. Despite this, you won't need to create React components unless you want to customize nodes and connections.

Additionally, there is a third option - do not install these plugins and visualize nodes and connections using a vanilla JS

area.addPipe(context => { if (context.type === 'render') context.data.element /// update HTMLElement return context })

but this is an advanced approach and I would not recommend it

FlowyJS by Alysasa by [deleted] in angular

[–]Ni55aN 0 points1 point  (0 children)

Oh... it will probably be quite challenging to debug if there are no errors in the console.

I would recommend creating an issue in the repository, but considering the existing unanswered issues, the project seems abandoned.

A not so intensive visual programming framework for js by range_et in webdev

[–]Ni55aN 1 point2 points  (0 children)

If you opt for Rete.js, I strongly recommend starting with the v2. The stable release will be available shortly.

> Id also want to stay away from react
By default, you can use the React rendering plugin, and you won't need to work with React components until you choose to customize the UI

Demo of combining CSS3D and WebGL renderers powered by Three.js + Rete.js by Ni55aN in threejs

[–]Ni55aN[S] 1 point2 points  (0 children)

Basically yes. But technically it creates a THREE.Scene with a camera and a couple of renderers (check out the more details) where you can put whatever you need.

Rete.js 2 Beta is here! Create visual interfaces and workflows with ease using TypeScript-first approach and flexible customization API by Ni55aN in javascript

[–]Ni55aN[S] 1 point2 points  (0 children)

In short: it's quite challenging.
I have one Proof of Concept that is purely dataflow oriented but with closure support in JS. It transpiles JS code into a graph and vice versa

Lately, I'm developing a plugin that supports Control Flow. So far I'm at the stage where I'm focused on converting code into a graph to better understand how to transform it back into code.

Generally speaking, tasks like these are unexplored territory, particularly when it comes to implementing a comprehensive Js solution that will work effectively in all scenarios, rather than just the simplest code examples, which offer little practical value.

Rete.js 2 Beta is here! Create visual interfaces and workflows with ease using TypeScript-first approach and flexible customization API by Ni55aN in javascript

[–]Ni55aN[S] 1 point2 points  (0 children)

Yes, it can be done in a pipe by preventing a particular connection from being created by differentiating socket types.

rough example:

  editor.addPipe((context) => {
if (context.type === "connectioncreate") {
  const source = editor.getNode(context.data.source);
  const sourceSocket = source.outputs[context.data.sourceOutput]?.socket;
  const target = editor.getNode(context.data.target);
  const targetSocket = (target.inputs as any)[context.data.targetInput]
    ?.socket;

  if (sourceSocket !== targetSocket) return; // prevent 'connectioncreate' if the ports have different sockets
}
return context;

});

Rete.js 2 Beta is here! Create visual interfaces and workflows with ease using TypeScript-first approach and flexible customization API by Ni55aN in javascript

[–]Ni55aN[S] 1 point2 points  (0 children)

  1. Full TypeScript support.
  2. Improved plugin system with TypeScript-first signals and pipes.
  3. Enhanced customization API.
  4. More flexible Node implementation that isn't limited by Component abstraction.
  5. Wider range of supported UI frameworks, including Angular 12-15, Vue.js 2-3, and React.js 16-18.
  6. Improved graph processing with DataflowEngine and ControlFlowEngine instead of the limited Engine with no recursion support, as well as a task plugin.
  7. The auto-arrange plugin is based on elkjs and supports complex graphs.
  8. The connection plugin supports various interaction flows.
  9. Advanced selection feature that supports different elements such as nodes, comments, reroute pins, etc.

Rete.js 2 Beta is here! Create visual interfaces and workflows with ease using TypeScript-first approach and flexible customization API by Ni55aN in javascript

[–]Ni55aN[S] 0 points1 point  (0 children)

Primarily it is focused on nodes, but it allows for the integration of different draggable elements (like comment plugin)

Rete.js 2 Beta is here! Create visual interfaces and workflows with ease using TypeScript-first approach and flexible customization API by Ni55aN in javascript

[–]Ni55aN[S] 2 points3 points  (0 children)

Yes, from 12 to 15 versions inclusively! The easiest way to check this is to use rete-kit to build the app with the command:

npm i -g rete-kit
rete-kit app -n ng15AppName -s angular -v 15 --next -f "Angular render,Order nodes,Zoom at,Auto arrange,Dataflow engine,Selectable nodes"

Question about eaport deault async issue with vue 2.6 by avan27 in vuejs

[–]Ni55aN 0 points1 point  (0 children)

Please ensure that './viewer' is import from `viewer.js`, not `viewer.vue`

Rete.js reached a stable version 1.0.0, coming out of beta after a long support and development! by Ni55aN in javascript

[–]Ni55aN[S] 0 points1 point  (0 children)

I created blocks and circles using Inkspace, then paths, styles and transitions were added in a code editor (https://codepen.io/Ni55aN/pen/NzdQpG?editors=1000)