@realflow/core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/algorithms.d.ts +25 -0
  2. package/dist/algorithms.d.ts.map +1 -0
  3. package/dist/algorithms.js +158 -0
  4. package/dist/algorithms.js.map +1 -0
  5. package/dist/collab.d.ts +105 -0
  6. package/dist/collab.d.ts.map +1 -0
  7. package/dist/collab.js +182 -0
  8. package/dist/collab.js.map +1 -0
  9. package/dist/geometry.d.ts +33 -0
  10. package/dist/geometry.d.ts.map +1 -0
  11. package/dist/geometry.js +113 -0
  12. package/dist/geometry.js.map +1 -0
  13. package/dist/guides.d.ts +14 -0
  14. package/dist/guides.d.ts.map +1 -0
  15. package/dist/guides.js +52 -0
  16. package/dist/guides.js.map +1 -0
  17. package/dist/index.d.ts +14 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +14 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/layout-worker.d.ts +53 -0
  22. package/dist/layout-worker.d.ts.map +1 -0
  23. package/dist/layout-worker.js +65 -0
  24. package/dist/layout-worker.js.map +1 -0
  25. package/dist/layout.d.ts +97 -0
  26. package/dist/layout.d.ts.map +1 -0
  27. package/dist/layout.js +644 -0
  28. package/dist/layout.js.map +1 -0
  29. package/dist/ops.d.ts +142 -0
  30. package/dist/ops.d.ts.map +1 -0
  31. package/dist/ops.js +351 -0
  32. package/dist/ops.js.map +1 -0
  33. package/dist/paths.d.ts +41 -0
  34. package/dist/paths.d.ts.map +1 -0
  35. package/dist/paths.js +179 -0
  36. package/dist/paths.js.map +1 -0
  37. package/dist/routing.d.ts +36 -0
  38. package/dist/routing.d.ts.map +1 -0
  39. package/dist/routing.js +185 -0
  40. package/dist/routing.js.map +1 -0
  41. package/dist/spatial.d.ts +43 -0
  42. package/dist/spatial.d.ts.map +1 -0
  43. package/dist/spatial.js +175 -0
  44. package/dist/spatial.js.map +1 -0
  45. package/dist/store.d.ts +274 -0
  46. package/dist/store.d.ts.map +1 -0
  47. package/dist/store.js +1610 -0
  48. package/dist/store.js.map +1 -0
  49. package/dist/types.d.ts +207 -0
  50. package/dist/types.d.ts.map +1 -0
  51. package/dist/types.js +2 -0
  52. package/dist/types.js.map +1 -0
  53. package/dist/utils.d.ts +6 -0
  54. package/dist/utils.d.ts.map +1 -0
  55. package/dist/utils.js +25 -0
  56. package/dist/utils.js.map +1 -0
  57. package/package.json +40 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry.js","sourceRoot":"","sources":["../src/geometry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { Guide, Rect } from './types.js';
2
+ export interface GuideResult {
3
+ /** Correction to apply to the moving rect for snapping. */
4
+ dx: number;
5
+ dy: number;
6
+ guides: Guide[];
7
+ }
8
+ /**
9
+ * Figma-style alignment guides: compares the moving rect's edges and center
10
+ * against other rects and returns the snap correction plus guide lines to
11
+ * render. Pure and allocation-light so it can run on every drag frame.
12
+ */
13
+ export declare const computeGuides: (moving: Rect, others: Iterable<Rect>, threshold?: number) => GuideResult;
14
+ //# sourceMappingURL=guides.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guides.d.ts","sourceRoot":"","sources":["../src/guides.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE3C,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAWD;;;;GAIG;AACH,eAAO,MAAM,aAAa,GACxB,QAAQ,IAAI,EACZ,QAAQ,QAAQ,CAAC,IAAI,CAAC,EACtB,kBAAa,KACZ,WA+CF,CAAC"}
package/dist/guides.js ADDED
@@ -0,0 +1,52 @@
1
+ const xLines = (r) => [r.x, r.x + r.width / 2, r.x + r.width];
2
+ const yLines = (r) => [r.y, r.y + r.height / 2, r.y + r.height];
3
+ /**
4
+ * Figma-style alignment guides: compares the moving rect's edges and center
5
+ * against other rects and returns the snap correction plus guide lines to
6
+ * render. Pure and allocation-light so it can run on every drag frame.
7
+ */
8
+ export const computeGuides = (moving, others, threshold = 5) => {
9
+ let bestX = null;
10
+ let bestY = null;
11
+ const mx = xLines(moving);
12
+ const my = yLines(moving);
13
+ for (const other of others) {
14
+ for (const ox of xLines(other)) {
15
+ for (const m of mx) {
16
+ const delta = ox - m;
17
+ const abs = Math.abs(delta);
18
+ if (abs <= threshold && (!bestX || abs < Math.abs(bestX.delta))) {
19
+ bestX = { delta, value: ox, otherRect: other };
20
+ }
21
+ }
22
+ }
23
+ for (const oy of yLines(other)) {
24
+ for (const m of my) {
25
+ const delta = oy - m;
26
+ const abs = Math.abs(delta);
27
+ if (abs <= threshold && (!bestY || abs < Math.abs(bestY.delta))) {
28
+ bestY = { delta, value: oy, otherRect: other };
29
+ }
30
+ }
31
+ }
32
+ }
33
+ const guides = [];
34
+ if (bestX) {
35
+ guides.push({
36
+ axis: 'x',
37
+ value: bestX.value,
38
+ from: Math.min(moving.y + bestX.delta * 0, bestX.otherRect.y) - 8,
39
+ to: Math.max(moving.y + moving.height, bestX.otherRect.y + bestX.otherRect.height) + 8,
40
+ });
41
+ }
42
+ if (bestY) {
43
+ guides.push({
44
+ axis: 'y',
45
+ value: bestY.value,
46
+ from: Math.min(moving.x, bestY.otherRect.x) - 8,
47
+ to: Math.max(moving.x + moving.width, bestY.otherRect.x + bestY.otherRect.width) + 8,
48
+ });
49
+ }
50
+ return { dx: bestX ? bestX.delta : 0, dy: bestY ? bestY.delta : 0, guides };
51
+ };
52
+ //# sourceMappingURL=guides.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guides.js","sourceRoot":"","sources":["../src/guides.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export * from './types.js';
2
+ export * from './geometry.js';
3
+ export * from './paths.js';
4
+ export * from './spatial.js';
5
+ export * from './guides.js';
6
+ export * from './algorithms.js';
7
+ export * from './layout.js';
8
+ export * from './layout-worker.js';
9
+ export * from './routing.js';
10
+ export * from './collab.js';
11
+ export * from './ops.js';
12
+ export { FlowStore, DEFAULT_NODE_WIDTH, DEFAULT_NODE_HEIGHT } from './store.js';
13
+ export { uid, shallowEqual, setsEqual } from './utils.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,14 @@
1
+ export * from './types.js';
2
+ export * from './geometry.js';
3
+ export * from './paths.js';
4
+ export * from './spatial.js';
5
+ export * from './guides.js';
6
+ export * from './algorithms.js';
7
+ export * from './layout.js';
8
+ export * from './layout-worker.js';
9
+ export * from './routing.js';
10
+ export * from './collab.js';
11
+ export * from './ops.js';
12
+ export { FlowStore, DEFAULT_NODE_WIDTH, DEFAULT_NODE_HEIGHT } from './store.js';
13
+ export { uid, shallowEqual, setsEqual } from './utils.js';
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { type LayoutEdge, type LayoutNode, type LayoutOptions, type LayoutType } from './layout.js';
2
+ /**
3
+ * A self-contained layout job — everything a Web Worker needs to compute a
4
+ * layout off the main thread. Structured-clone friendly (plain data only).
5
+ */
6
+ export interface LayoutJob {
7
+ type: LayoutType;
8
+ nodes: LayoutNode[];
9
+ edges: LayoutEdge[];
10
+ options?: LayoutOptions;
11
+ /** Correlates a response to its request. */
12
+ requestId?: number;
13
+ }
14
+ export interface LayoutResult {
15
+ requestId?: number;
16
+ positions: {
17
+ id: string;
18
+ x: number;
19
+ y: number;
20
+ }[];
21
+ }
22
+ /**
23
+ * Run a layout job. This is the exact function a worker executes — pure, no
24
+ * DOM, no store — so it can run on any thread. `packages/core/test/
25
+ * layout-worker.test.ts` runs it inside a real worker_threads Worker.
26
+ */
27
+ export declare const runLayoutJob: (job: LayoutJob) => LayoutResult;
28
+ /**
29
+ * A minimal worker-message handler. Drop this into your worker entry:
30
+ *
31
+ * import { layoutWorkerHandler } from '@realflow/core';
32
+ * self.onmessage = (e) => self.postMessage(layoutWorkerHandler(e.data));
33
+ */
34
+ export declare const layoutWorkerHandler: (job: LayoutJob) => LayoutResult;
35
+ /** Minimal duck-typed Worker surface (Web Worker or worker_threads). */
36
+ export interface WorkerLike {
37
+ postMessage: (msg: unknown) => void;
38
+ addEventListener?: (type: 'message', cb: (ev: {
39
+ data: unknown;
40
+ }) => void) => void;
41
+ removeEventListener?: (type: 'message', cb: (ev: {
42
+ data: unknown;
43
+ }) => void) => void;
44
+ on?: (type: 'message', cb: (data: unknown) => void) => void;
45
+ off?: (type: 'message', cb: (data: unknown) => void) => void;
46
+ }
47
+ /**
48
+ * Send a layout job to a worker and await its result — transport-agnostic
49
+ * (accepts a Web Worker or a Node worker_threads Worker). The caller owns the
50
+ * worker's lifecycle.
51
+ */
52
+ export declare const layoutInWorker: (worker: WorkerLike, job: Omit<LayoutJob, "requestId">) => Promise<LayoutResult>;
53
+ //# sourceMappingURL=layout-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout-worker.d.ts","sourceRoot":"","sources":["../src/layout-worker.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,UAAU,CAAC;AAElB;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACnD;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,KAAK,SAAS,KAAG,YAwB7C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAAI,KAAK,SAAS,KAAG,YAAiC,CAAC;AAEvF,wEAAwE;AACxE,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IACpC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,KAAK,IAAI,CAAC;IAClF,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,KAAK,IAAI,CAAC;IACrF,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,CAAC;IAC5D,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,CAAC;CAC9D;AAID;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,UAAU,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,KAAG,OAAO,CAAC,YAAY,CAmB1G,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { layeredLayout, treeLayout, forceLayout, gridLayout, radialLayout, } from './layout.js';
2
+ /**
3
+ * Run a layout job. This is the exact function a worker executes — pure, no
4
+ * DOM, no store — so it can run on any thread. `packages/core/test/
5
+ * layout-worker.test.ts` runs it inside a real worker_threads Worker.
6
+ */
7
+ export const runLayoutJob = (job) => {
8
+ let positions;
9
+ switch (job.type) {
10
+ case 'tree':
11
+ positions = treeLayout(job.nodes, job.edges, job.options);
12
+ break;
13
+ case 'force':
14
+ positions = forceLayout(job.nodes, job.edges, job.options);
15
+ break;
16
+ case 'grid':
17
+ positions = gridLayout(job.nodes, job.options);
18
+ break;
19
+ case 'radial':
20
+ positions = radialLayout(job.nodes, job.edges, job.options);
21
+ break;
22
+ case 'layered':
23
+ default:
24
+ positions = layeredLayout(job.nodes, job.edges, job.options);
25
+ break;
26
+ }
27
+ return {
28
+ requestId: job.requestId,
29
+ positions: [...positions].map(([id, p]) => ({ id, x: p.x, y: p.y })),
30
+ };
31
+ };
32
+ /**
33
+ * A minimal worker-message handler. Drop this into your worker entry:
34
+ *
35
+ * import { layoutWorkerHandler } from '@realflow/core';
36
+ * self.onmessage = (e) => self.postMessage(layoutWorkerHandler(e.data));
37
+ */
38
+ export const layoutWorkerHandler = (job) => runLayoutJob(job);
39
+ let requestCounter = 0;
40
+ /**
41
+ * Send a layout job to a worker and await its result — transport-agnostic
42
+ * (accepts a Web Worker or a Node worker_threads Worker). The caller owns the
43
+ * worker's lifecycle.
44
+ */
45
+ export const layoutInWorker = (worker, job) => {
46
+ const requestId = ++requestCounter;
47
+ return new Promise((resolve) => {
48
+ const onMessage = (data) => {
49
+ const res = data;
50
+ if (res && res.requestId === requestId) {
51
+ cleanup();
52
+ resolve(res);
53
+ }
54
+ };
55
+ const webHandler = (ev) => onMessage(ev.data);
56
+ const cleanup = () => {
57
+ worker.removeEventListener?.('message', webHandler);
58
+ worker.off?.('message', onMessage);
59
+ };
60
+ worker.addEventListener?.('message', webHandler);
61
+ worker.on?.('message', onMessage);
62
+ worker.postMessage({ ...job, requestId });
63
+ });
64
+ };
65
+ //# sourceMappingURL=layout-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout-worker.js","sourceRoot":"","sources":["../src/layout-worker.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,UAAU,EACV,WAAW,EACX,UAAU,EACV,YAAY,GAKb,MAAM,UAAU,CAAC;AAoBlB;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAc,EAAgB,EAAE;IAC3D,IAAI,SAA0B,CAAC;IAC/B,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,MAAM;YACT,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAC1D,MAAM;QACR,KAAK,OAAO;YACV,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3D,MAAM;QACR,KAAK,MAAM;YACT,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAC/C,MAAM;QACR,KAAK,QAAQ;YACX,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5D,MAAM;QACR,KAAK,SAAS,CAAC;QACf;YACE,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7D,MAAM;IACV,CAAC;IACD,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KACrE,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAc,EAAgB,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AAWvF,IAAI,cAAc,GAAG,CAAC,CAAC;AAEvB;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAkB,EAAE,GAAiC,EAAyB,EAAE;IAC7G,MAAM,SAAS,GAAG,EAAE,cAAc,CAAC;IACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,SAAS,GAAG,CAAC,IAAa,EAAQ,EAAE;YACxC,MAAM,GAAG,GAAG,IAAoB,CAAC;YACjC,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACvC,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CAAC,CAAC;YACf,CAAC;QACH,CAAC,CAAC;QACF,MAAM,UAAU,GAAG,CAAC,EAAqB,EAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,MAAM,CAAC,mBAAmB,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YACpD,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACrC,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACjD,MAAM,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAClC,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,97 @@
1
+ import type { XY } from './types.js';
2
+ import type { FlowStore } from './store.js';
3
+ /**
4
+ * Built-in auto-layout. Five algorithms, zero external dependencies —
5
+ * no dagre, no elkjs, no d3-hierarchy required.
6
+ */
7
+ export interface LayoutNode {
8
+ id: string;
9
+ width: number;
10
+ height: number;
11
+ }
12
+ export interface LayoutEdge {
13
+ source: string;
14
+ target: string;
15
+ }
16
+ export type LayoutDirection = 'LR' | 'RL' | 'TB' | 'BT';
17
+ export interface LayeredOptions {
18
+ direction?: LayoutDirection;
19
+ /** Gap between nodes in the same rank. */
20
+ nodeGap?: number;
21
+ /** Gap between ranks. */
22
+ rankGap?: number;
23
+ }
24
+ export type Positions = Map<string, XY>;
25
+ /**
26
+ * Sugiyama-style layered layout: longest-path ranking, barycenter ordering
27
+ * sweeps, then size-aware coordinate assignment. Handles cycles.
28
+ */
29
+ export declare const layeredLayout: (nodes: LayoutNode[], edges: LayoutEdge[], opts?: LayeredOptions) => Positions;
30
+ export interface TreeOptions {
31
+ direction?: LayoutDirection;
32
+ nodeGap?: number;
33
+ rankGap?: number;
34
+ }
35
+ /**
36
+ * Tidy tree layout: children are laid out below/beside their parent, parents
37
+ * centered over their subtrees. Non-tree edges are ignored (BFS tree).
38
+ */
39
+ export declare const treeLayout: (nodes: LayoutNode[], edges: LayoutEdge[], opts?: TreeOptions) => Positions;
40
+ export interface ForceOptions {
41
+ iterations?: number;
42
+ /** Ideal edge length. */
43
+ linkDistance?: number;
44
+ /** Initial positions (defaults to a circle). */
45
+ initial?: Positions;
46
+ /** Deterministic seed for the initial circle jitter. */
47
+ seed?: number;
48
+ }
49
+ /** Fruchterman–Reingold force layout with grid-bucketed repulsion. */
50
+ export declare const forceLayout: (nodes: LayoutNode[], edges: LayoutEdge[], opts?: ForceOptions) => Positions;
51
+ export interface GridOptions {
52
+ /** Columns; defaults to ceil(sqrt(n)). */
53
+ columns?: number;
54
+ gap?: number;
55
+ }
56
+ /** Uniform grid placement in current order. */
57
+ export declare const gridLayout: (nodes: LayoutNode[], opts?: GridOptions) => Positions;
58
+ export interface RadialOptions {
59
+ /** Gap between rings. */
60
+ ringGap?: number;
61
+ }
62
+ /** Concentric rings by BFS depth from the roots. */
63
+ export declare const radialLayout: (nodes: LayoutNode[], edges: LayoutEdge[], opts?: RadialOptions) => Positions;
64
+ export type LayoutType = 'layered' | 'tree' | 'force' | 'grid' | 'radial';
65
+ export interface LayoutOptions extends LayeredOptions, ForceOptions, GridOptions, RadialOptions {
66
+ /** Only lay out these nodes (defaults to all root-level nodes). */
67
+ nodes?: string[];
68
+ /** Animate node movement (ms) — handled by applyLayout. */
69
+ duration?: number;
70
+ /** Fit the view afterwards. */
71
+ fitView?: boolean;
72
+ }
73
+ /** Compute a layout for the store's root-level nodes. */
74
+ export declare const computeLayout: (store: FlowStore, type: LayoutType, opts?: LayoutOptions) => Positions;
75
+ /** Apply computed positions as a single undoable transaction. */
76
+ export declare const applyLayout: (store: FlowStore, positions: Positions) => void;
77
+ export interface IncrementalOptions {
78
+ /** Gap kept from existing nodes when placing new ones. Default 40. */
79
+ gap?: number;
80
+ /** Preferred offset from a connected neighbor. Default 220 (x), 120 (y). */
81
+ stepX?: number;
82
+ stepY?: number;
83
+ }
84
+ /**
85
+ * Position only the given new nodes, leaving the existing graph untouched —
86
+ * so adding one node doesn't reshuffle the whole diagram. Each new node is
87
+ * placed next to its already-positioned neighbors (downstream of a source),
88
+ * then nudged to avoid overlapping existing nodes. Nodes with no positioned
89
+ * neighbor are dropped into free space below the current bounds.
90
+ *
91
+ * Returns the computed positions (does not mutate the store — pair with
92
+ * `applyLayout`).
93
+ */
94
+ export declare const incrementalLayout: (store: FlowStore, newNodeIds: string[], opts?: IncrementalOptions) => Positions;
95
+ /** Convenience: compute + apply + optionally fit the view. */
96
+ export declare const layout: (store: FlowStore, type: LayoutType, opts?: LayoutOptions) => void;
97
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"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"}