@statelyai/layout 0.1.3 → 0.3.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.
- package/NOTICE.md +43 -0
- package/README.md +153 -6
- package/dist/elkjs/index.cjs +9 -0
- package/dist/elkjs/index.d.cts +155 -0
- package/dist/elkjs/index.d.mts +51 -39
- package/dist/elkjs/index.mjs +3 -1484
- package/dist/elkjs/main.cjs +17 -0
- package/dist/elkjs/main.d.cts +10 -0
- package/dist/elkjs/main.d.mts +11 -0
- package/dist/elkjs/main.mjs +17 -0
- package/dist/elkjs/worker-api.cjs +3 -0
- package/dist/elkjs/worker-api.d.cts +3 -0
- package/dist/elkjs/worker-api.d.mts +3 -0
- package/dist/elkjs/worker-api.mjs +3 -0
- package/dist/elkjs/worker.cjs +86 -0
- package/dist/elkjs/worker.d.cts +17 -0
- package/dist/elkjs/worker.d.mts +17 -0
- package/dist/elkjs/worker.mjs +86 -0
- package/dist/elkjs-DaHMISnQ.mjs +1677 -0
- package/dist/elkjs-dMghiiWW.cjs +1706 -0
- package/dist/index-BEA_pzeT.d.cts +72 -0
- package/dist/{index-8xYkohbz.d.mts → index-D9dhxrRl.d.cts} +111 -5
- package/dist/index-DNTLRsDl.d.mts +72 -0
- package/dist/index-DNixtE3h.d.mts +1318 -0
- package/dist/index.cjs +215 -0
- package/dist/index.d.cts +78 -0
- package/dist/index.d.mts +4 -3
- package/dist/index.mjs +25 -25
- package/dist/layered/index.cjs +38 -0
- package/dist/layered/index.d.cts +3 -0
- package/dist/layered/index.d.mts +3 -2
- package/dist/layered/index.mjs +1 -1
- package/dist/layered-B2buJqMf.cjs +12009 -0
- package/dist/{layered-CoeH9LRO.mjs → layered-DGFTeQSl.mjs} +2323 -149
- package/dist/{spore-BtTSZbb6.mjs → layout-engine-Cs5tatA6.mjs} +159 -5
- package/dist/layout-engine-Dn1PiFwP.cjs +712 -0
- package/dist/public-types-9NCPoqbp.d.mts +109 -0
- package/dist/public-types-BcRZoJE3.d.cts +109 -0
- package/dist/routing/index.cjs +28 -0
- package/dist/routing/index.d.cts +3 -0
- package/dist/routing/index.d.mts +3 -0
- package/dist/routing/index.mjs +3 -0
- package/dist/routing-A2hrK9MP.mjs +2396 -0
- package/dist/routing-ujEP7Qh6.cjs +2606 -0
- package/dist/types-CT2akdK0.d.mts +133 -0
- package/dist/types-uxPlGRof.d.cts +133 -0
- package/dist/worker-client-BNjwT1AJ.mjs +92 -0
- package/dist/worker-client-BwGGRD5y.d.mts +19 -0
- package/dist/worker-client-D4oEvhAl.cjs +98 -0
- package/dist/worker-client-D4zNyPEI.d.cts +19 -0
- package/package.json +45 -10
- package/src/authoring/coordinates.ts +114 -0
- package/src/authoring/partial.ts +584 -0
- package/src/authoring/routing.ts +211 -0
- package/src/box.ts +22 -0
- package/src/constraints.ts +222 -0
- package/src/elkjs/index.ts +104 -39
- package/src/elkjs/main.ts +19 -0
- package/src/elkjs/public-types.ts +125 -0
- package/src/elkjs/routes.ts +147 -0
- package/src/elkjs/worker-api.ts +29 -0
- package/src/elkjs/worker-client.ts +138 -0
- package/src/elkjs/worker.ts +117 -0
- package/src/index.ts +19 -0
- package/src/internal/elkjs-compatibility.ts +17 -0
- package/src/internal/layout-engine.ts +126 -0
- package/src/layered/compound.ts +417 -0
- package/src/layered/index.ts +58 -105
- package/src/layered/types.ts +21 -0
- package/src/layout.ts +35 -28
- package/src/packing.ts +22 -0
- package/src/random.ts +75 -3
- package/src/routing/adapters.ts +111 -0
- package/src/routing/algorithms.ts +676 -0
- package/src/routing/coordination.ts +86 -0
- package/src/routing/engine.ts +473 -0
- package/src/routing/index.ts +68 -0
- package/src/routing/layout-cache.ts +65 -0
- package/src/routing/model.ts +218 -0
- package/src/routing/path.ts +324 -0
- package/src/routing/persistent.ts +117 -0
- package/src/routing/search.ts +276 -0
- package/src/routing/spatial.ts +78 -0
- package/src/routing/types.ts +146 -0
- package/src/types.ts +17 -2
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require('../layered-B2buJqMf.cjs');
|
|
2
|
+
const require_elkjs_worker = require('./worker.cjs');
|
|
3
|
+
const require_worker_client = require('../worker-client-D4oEvhAl.cjs');
|
|
4
|
+
|
|
5
|
+
//#region src/elkjs/main.ts
|
|
6
|
+
/** Node-compatible elkjs entry point with an in-process worker fallback. */
|
|
7
|
+
var ELK = class extends require_worker_client.WorkerELK {
|
|
8
|
+
constructor(options = {}) {
|
|
9
|
+
super({
|
|
10
|
+
...options,
|
|
11
|
+
workerFactory: options.workerFactory ?? ((url) => new require_elkjs_worker.Worker(url))
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
//#endregion
|
|
17
|
+
module.exports = ELK;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { n as ELKConstructorArguments } from "../public-types-BcRZoJE3.cjs";
|
|
2
|
+
import { t as WorkerELK } from "../worker-client-D4zNyPEI.cjs";
|
|
3
|
+
|
|
4
|
+
//#region src/elkjs/main.d.ts
|
|
5
|
+
|
|
6
|
+
/** Node-compatible elkjs entry point with an in-process worker fallback. */
|
|
7
|
+
declare class ELK extends WorkerELK {
|
|
8
|
+
constructor(options?: ELKConstructorArguments);
|
|
9
|
+
}
|
|
10
|
+
export = ELK;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { n as ELKConstructorArguments } from "../public-types-9NCPoqbp.mjs";
|
|
2
|
+
import { t as WorkerELK } from "../worker-client-BwGGRD5y.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/elkjs/main.d.ts
|
|
5
|
+
|
|
6
|
+
/** Node-compatible elkjs entry point with an in-process worker fallback. */
|
|
7
|
+
declare class ELK extends WorkerELK {
|
|
8
|
+
constructor(options?: ELKConstructorArguments);
|
|
9
|
+
}
|
|
10
|
+
//#endregion
|
|
11
|
+
export { ELK as default };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import "../layered-DGFTeQSl.mjs";
|
|
2
|
+
import { Worker } from "./worker.mjs";
|
|
3
|
+
import { t as WorkerELK } from "../worker-client-BNjwT1AJ.mjs";
|
|
4
|
+
|
|
5
|
+
//#region src/elkjs/main.ts
|
|
6
|
+
/** Node-compatible elkjs entry point with an in-process worker fallback. */
|
|
7
|
+
var ELK = class extends WorkerELK {
|
|
8
|
+
constructor(options = {}) {
|
|
9
|
+
super({
|
|
10
|
+
...options,
|
|
11
|
+
workerFactory: options.workerFactory ?? ((url) => new Worker(url))
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
//#endregion
|
|
17
|
+
export { ELK as default };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { _ as ElkShape, a as ElkEdgeSection, c as ElkLabel, d as ElkLayoutCategoryDescription, f as ElkLayoutOptionDescription, g as ElkPrimitiveEdge, h as ElkPort, i as ElkEdge, l as ElkLayoutAlgorithmDescription, m as ElkPoint, n as ELKConstructorArguments, o as ElkExtendedEdge, p as ElkNode, r as ElkCommonDescription, s as ElkGraphElement, t as ELK, u as ElkLayoutArguments, v as LaidOutElkNode, y as LayoutOptions } from "../public-types-BcRZoJE3.cjs";
|
|
2
|
+
import { t as WorkerELK } from "../worker-client-D4zNyPEI.cjs";
|
|
3
|
+
export { type ELK, type ELKConstructorArguments, type ElkCommonDescription, type ElkEdge, type ElkEdgeSection, type ElkExtendedEdge, type ElkGraphElement, type ElkLabel, type ElkLayoutAlgorithmDescription, type ElkLayoutArguments, type ElkLayoutCategoryDescription, type ElkLayoutOptionDescription, type ElkNode, type ElkPoint, type ElkPort, type ElkPrimitiveEdge, type ElkShape, type LaidOutElkNode, type LayoutOptions, WorkerELK as default };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { _ as ElkShape, a as ElkEdgeSection, c as ElkLabel, d as ElkLayoutCategoryDescription, f as ElkLayoutOptionDescription, g as ElkPrimitiveEdge, h as ElkPort, i as ElkEdge, l as ElkLayoutAlgorithmDescription, m as ElkPoint, n as ELKConstructorArguments, o as ElkExtendedEdge, p as ElkNode, r as ElkCommonDescription, s as ElkGraphElement, t as ELK, u as ElkLayoutArguments, v as LaidOutElkNode, y as LayoutOptions } from "../public-types-9NCPoqbp.mjs";
|
|
2
|
+
import { t as WorkerELK } from "../worker-client-BwGGRD5y.mjs";
|
|
3
|
+
export { type ELK, type ELKConstructorArguments, type ElkCommonDescription, type ElkEdge, type ElkEdgeSection, type ElkExtendedEdge, type ElkGraphElement, type ElkLabel, type ElkLayoutAlgorithmDescription, type ElkLayoutArguments, type ElkLayoutCategoryDescription, type ElkLayoutOptionDescription, type ElkNode, type ElkPoint, type ElkPort, type ElkPrimitiveEdge, type ElkShape, type LaidOutElkNode, type LayoutOptions, WorkerELK as default };
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
require('../layered-B2buJqMf.cjs');
|
|
2
|
+
const require_elkjs = require('../elkjs-dMghiiWW.cjs');
|
|
3
|
+
|
|
4
|
+
//#region src/elkjs/worker.ts
|
|
5
|
+
/*******************************************************************************
|
|
6
|
+
* Copyright (c) 2019 Kiel University and others.
|
|
7
|
+
*
|
|
8
|
+
* Adapted from elkjs 0.11.1 lib/elk-worker.js.
|
|
9
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
10
|
+
*******************************************************************************/
|
|
11
|
+
/** In-process implementation of the message interface shipped by elkjs workers. */
|
|
12
|
+
var Worker = class {
|
|
13
|
+
onerror = null;
|
|
14
|
+
onmessage = null;
|
|
15
|
+
onmessageerror = null;
|
|
16
|
+
#listeners = /* @__PURE__ */ new Map();
|
|
17
|
+
#elk = new require_elkjs.ELK();
|
|
18
|
+
#terminated = false;
|
|
19
|
+
constructor(_url) {}
|
|
20
|
+
postMessage(message) {
|
|
21
|
+
if (this.#terminated) return;
|
|
22
|
+
queueMicrotask(() => void this.#handle(message));
|
|
23
|
+
}
|
|
24
|
+
terminate() {
|
|
25
|
+
this.#terminated = true;
|
|
26
|
+
}
|
|
27
|
+
addEventListener(type, listener, _options) {
|
|
28
|
+
const listeners = this.#listeners.get(type) ?? /* @__PURE__ */ new Set();
|
|
29
|
+
listeners.add(listener);
|
|
30
|
+
this.#listeners.set(type, listeners);
|
|
31
|
+
}
|
|
32
|
+
removeEventListener(type, listener, _options) {
|
|
33
|
+
this.#listeners.get(type)?.delete(listener);
|
|
34
|
+
}
|
|
35
|
+
dispatchEvent(event) {
|
|
36
|
+
for (const listener of this.#listeners.get(event.type) ?? []) if (typeof listener === "function") listener.call(this, event);
|
|
37
|
+
else listener.handleEvent(event);
|
|
38
|
+
return !event.defaultPrevented;
|
|
39
|
+
}
|
|
40
|
+
async #handle(message) {
|
|
41
|
+
try {
|
|
42
|
+
let data;
|
|
43
|
+
switch (message.cmd) {
|
|
44
|
+
case "register":
|
|
45
|
+
this.#elk = new require_elkjs.ELK({ algorithms: message.algorithms });
|
|
46
|
+
break;
|
|
47
|
+
case "layout":
|
|
48
|
+
data = await this.#elk.layout(message.graph, {
|
|
49
|
+
...message.options,
|
|
50
|
+
layoutOptions: message.layoutOptions
|
|
51
|
+
});
|
|
52
|
+
break;
|
|
53
|
+
case "algorithms":
|
|
54
|
+
data = await this.#elk.knownLayoutAlgorithms();
|
|
55
|
+
break;
|
|
56
|
+
case "options":
|
|
57
|
+
data = await this.#elk.knownLayoutOptions();
|
|
58
|
+
break;
|
|
59
|
+
case "categories":
|
|
60
|
+
data = await this.#elk.knownLayoutCategories();
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
this.#answer({
|
|
64
|
+
id: message.id,
|
|
65
|
+
data
|
|
66
|
+
});
|
|
67
|
+
} catch (error) {
|
|
68
|
+
this.#answer({
|
|
69
|
+
id: message.id,
|
|
70
|
+
error
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
#answer(answer) {
|
|
75
|
+
if (this.#terminated) return;
|
|
76
|
+
const event = {
|
|
77
|
+
data: answer,
|
|
78
|
+
type: "message"
|
|
79
|
+
};
|
|
80
|
+
this.onmessage?.call(this, event);
|
|
81
|
+
this.dispatchEvent(event);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
//#endregion
|
|
86
|
+
exports.Worker = Worker;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region src/elkjs/worker.d.ts
|
|
2
|
+
/** In-process implementation of the message interface shipped by elkjs workers. */
|
|
3
|
+
declare class Worker implements globalThis.Worker {
|
|
4
|
+
#private;
|
|
5
|
+
onerror: ((this: AbstractWorker, event: ErrorEvent) => unknown) | null;
|
|
6
|
+
onmessage: ((this: globalThis.Worker, event: MessageEvent) => unknown) | null;
|
|
7
|
+
onmessageerror: ((this: globalThis.Worker, event: MessageEvent) => unknown) | null;
|
|
8
|
+
constructor(_url?: string);
|
|
9
|
+
postMessage(message: unknown, _transfer: Transferable[]): void;
|
|
10
|
+
postMessage(message: unknown, _options?: StructuredSerializeOptions): void;
|
|
11
|
+
terminate(): void;
|
|
12
|
+
addEventListener<K extends keyof WorkerEventMap>(type: K, listener: (this: globalThis.Worker, event: WorkerEventMap[K]) => unknown, options?: boolean | AddEventListenerOptions): void;
|
|
13
|
+
removeEventListener<K extends keyof WorkerEventMap>(type: K, listener: (this: globalThis.Worker, event: WorkerEventMap[K]) => unknown, options?: boolean | EventListenerOptions): void;
|
|
14
|
+
dispatchEvent(event: Event): boolean;
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { Worker };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region src/elkjs/worker.d.ts
|
|
2
|
+
/** In-process implementation of the message interface shipped by elkjs workers. */
|
|
3
|
+
declare class Worker implements globalThis.Worker {
|
|
4
|
+
#private;
|
|
5
|
+
onerror: ((this: AbstractWorker, event: ErrorEvent) => unknown) | null;
|
|
6
|
+
onmessage: ((this: globalThis.Worker, event: MessageEvent) => unknown) | null;
|
|
7
|
+
onmessageerror: ((this: globalThis.Worker, event: MessageEvent) => unknown) | null;
|
|
8
|
+
constructor(_url?: string);
|
|
9
|
+
postMessage(message: unknown, _transfer: Transferable[]): void;
|
|
10
|
+
postMessage(message: unknown, _options?: StructuredSerializeOptions): void;
|
|
11
|
+
terminate(): void;
|
|
12
|
+
addEventListener<K extends keyof WorkerEventMap>(type: K, listener: (this: globalThis.Worker, event: WorkerEventMap[K]) => unknown, options?: boolean | AddEventListenerOptions): void;
|
|
13
|
+
removeEventListener<K extends keyof WorkerEventMap>(type: K, listener: (this: globalThis.Worker, event: WorkerEventMap[K]) => unknown, options?: boolean | EventListenerOptions): void;
|
|
14
|
+
dispatchEvent(event: Event): boolean;
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { Worker };
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import "../layered-DGFTeQSl.mjs";
|
|
2
|
+
import { t as ELK } from "../elkjs-DaHMISnQ.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/elkjs/worker.ts
|
|
5
|
+
/*******************************************************************************
|
|
6
|
+
* Copyright (c) 2019 Kiel University and others.
|
|
7
|
+
*
|
|
8
|
+
* Adapted from elkjs 0.11.1 lib/elk-worker.js.
|
|
9
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
10
|
+
*******************************************************************************/
|
|
11
|
+
/** In-process implementation of the message interface shipped by elkjs workers. */
|
|
12
|
+
var Worker = class {
|
|
13
|
+
onerror = null;
|
|
14
|
+
onmessage = null;
|
|
15
|
+
onmessageerror = null;
|
|
16
|
+
#listeners = /* @__PURE__ */ new Map();
|
|
17
|
+
#elk = new ELK();
|
|
18
|
+
#terminated = false;
|
|
19
|
+
constructor(_url) {}
|
|
20
|
+
postMessage(message) {
|
|
21
|
+
if (this.#terminated) return;
|
|
22
|
+
queueMicrotask(() => void this.#handle(message));
|
|
23
|
+
}
|
|
24
|
+
terminate() {
|
|
25
|
+
this.#terminated = true;
|
|
26
|
+
}
|
|
27
|
+
addEventListener(type, listener, _options) {
|
|
28
|
+
const listeners = this.#listeners.get(type) ?? /* @__PURE__ */ new Set();
|
|
29
|
+
listeners.add(listener);
|
|
30
|
+
this.#listeners.set(type, listeners);
|
|
31
|
+
}
|
|
32
|
+
removeEventListener(type, listener, _options) {
|
|
33
|
+
this.#listeners.get(type)?.delete(listener);
|
|
34
|
+
}
|
|
35
|
+
dispatchEvent(event) {
|
|
36
|
+
for (const listener of this.#listeners.get(event.type) ?? []) if (typeof listener === "function") listener.call(this, event);
|
|
37
|
+
else listener.handleEvent(event);
|
|
38
|
+
return !event.defaultPrevented;
|
|
39
|
+
}
|
|
40
|
+
async #handle(message) {
|
|
41
|
+
try {
|
|
42
|
+
let data;
|
|
43
|
+
switch (message.cmd) {
|
|
44
|
+
case "register":
|
|
45
|
+
this.#elk = new ELK({ algorithms: message.algorithms });
|
|
46
|
+
break;
|
|
47
|
+
case "layout":
|
|
48
|
+
data = await this.#elk.layout(message.graph, {
|
|
49
|
+
...message.options,
|
|
50
|
+
layoutOptions: message.layoutOptions
|
|
51
|
+
});
|
|
52
|
+
break;
|
|
53
|
+
case "algorithms":
|
|
54
|
+
data = await this.#elk.knownLayoutAlgorithms();
|
|
55
|
+
break;
|
|
56
|
+
case "options":
|
|
57
|
+
data = await this.#elk.knownLayoutOptions();
|
|
58
|
+
break;
|
|
59
|
+
case "categories":
|
|
60
|
+
data = await this.#elk.knownLayoutCategories();
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
this.#answer({
|
|
64
|
+
id: message.id,
|
|
65
|
+
data
|
|
66
|
+
});
|
|
67
|
+
} catch (error) {
|
|
68
|
+
this.#answer({
|
|
69
|
+
id: message.id,
|
|
70
|
+
error
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
#answer(answer) {
|
|
75
|
+
if (this.#terminated) return;
|
|
76
|
+
const event = {
|
|
77
|
+
data: answer,
|
|
78
|
+
type: "message"
|
|
79
|
+
};
|
|
80
|
+
this.onmessage?.call(this, event);
|
|
81
|
+
this.dispatchEvent(event);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
//#endregion
|
|
86
|
+
export { Worker };
|