@blocksuite/connector
TypeScript icon, indicating that this package has built-in type declarations

0.6.0 • Public • Published

@blocksuite/connector

How to use

import { route, Rectangle } from '@blocksuite/connector';

const rects = [
  new Rectangle(30, 30, 200, 200),
  new Rectangle(160, 160, 300, 300),
];

const points = [
  { x: 50, y: 30 },
  { x: 160, y: 200 },
];

const path = route(rects, points);
console.log('path', path);

Example

See packages/playground/examples/canvas/connector.html

Info

The main idea comes from https://medium.com/swlh/routing-orthogonal-diagram-connectors-in-javascript-191dc2c5ff70 . The final implementation is based on the idea of the blog and modifies the following parts:

  • When generating graph, do not rely on the binding of rectangle and point
  • When generating graphs, do not limit the number of rectangles and points
  • When the path is finally calculated, select any two points from the graph
  • When there are only two points or only one rectangle, manually generate the points of the graph

Problems caused by modifications:

  • The Graph becomes larger, and more points.length lines are added, causing the final path point to increase points.length * 2n

References

Blog:

Code:

Visualized path finding:

Dependents (0)

Package Sidebar

Install

npm i @blocksuite/connector

Weekly Downloads

55

Version

0.6.0

License

MPL-2.0

Unpacked Size

185 kB

Total Files

106

Last publish

Collaborators

  • lawvs
  • doodlewind