@weasel-js/diagram 1.9.1 → 1.9.2
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/README.md +37 -7
- package/dist/{chunk-6VYT4WCM.js → chunk-UBM2J3HJ.js} +122 -115
- package/dist/chunk-UBM2J3HJ.js.map +1 -0
- package/dist/index.d.ts +141 -28
- package/dist/index.js +182 -73
- package/dist/index.js.map +1 -1
- package/dist/layout.d.ts +1 -1
- package/dist/{layout.entry-ClWUwH16.d.ts → layout.entry-W-8PYfGM.d.ts} +8 -3
- package/dist/layout.js +1 -1
- package/package.json +3 -3
- package/dist/chunk-6VYT4WCM.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { P as Port, a as PortsOptions, D as DiagramNodeLike, b as DiagramNodeReader, c as
|
|
2
|
-
export {
|
|
3
|
-
import { Vec2, DerivedDep, Path, SceneRegistry, PoseDescriptor, ChromeState, FillStyle, Stroke, CursorSpec, Affordance, InvocationCtx, GestureBinding, Action, Contribution, RenderLayer, AddNodeSpec, RectPose, EasingFn, NodeId,
|
|
1
|
+
import { P as Port, a as PortsOptions, D as DiagramNodeLike, b as DiagramNodeReader, R as Row, O as Outline, c as PortSpec, B as BodySpec, d as DiagramNode, L as LayoutFn, e as LayoutOptions, M as MeasureRowText, G as GraphSource, F as ForceOptions, f as LayoutResult, g as Graph } from './layout.entry-W-8PYfGM.js';
|
|
2
|
+
export { h as BodyFloor, i as BodyNodeSpec, j as Bounds, k as BuildBodyOptions, l as BuildGraphOptions, C as COMPASS, m as DEFAULT_NODE_GAP, n as DEFAULT_PORTS, o as DEFAULT_RANK_GAP, p as DIAGRAM_TRAIT_KEY, q as DiagramNodeEntry, r as ForceBody, s as ForceRelaxation, t as GraphEdge, u as GraphNode, v as GraphNodeLike, w as LayoutAxes, x as LayoutDirection, y as PortAnchor, z as RowBox, A as RowNodeData, E as RowPort, H as RowPortBox, I as RowTextStyle, S as Slot, J as axesFor, K as backEdges, N as bodyOutline, Q as bodyTrait, T as boxForContent, U as buildBody, V as buildGraph, W as canvasMeasure, X as contentBox, Y as createDiagramNodes, Z as dataKeyReader, _ as diagramNodeOf, $ as force, a0 as forceRelaxation, a1 as forestOf, a2 as graphOrder, a3 as isPinned, a4 as layered, a5 as layoutBody, a6 as layoutRowPorts, a7 as measureBody, a8 as outlinePath, a9 as outlinePolyline, aa as packAcross, ab as pinnedSet, ac as portOf, ad as portsOf, ae as portsOnOutline, af as ranksOf, ag as rayHit, ah as seededOrder, ai as settle, aj as sizeToBody, ak as translated, al as tree } from './layout.entry-W-8PYfGM.js';
|
|
3
|
+
import { Vec2, DerivedDep, Path, SceneRegistry, PoseDescriptor, ChromeState, FillStyle, Stroke, CursorSpec, Affordance, InvocationCtx, GestureBinding, Action, Contribution, RenderLayer, MarkerRef, AddNodeSpec, RectPose, Scene, EasingFn, NodeId, NodeShapeEntry, View, SelectionApi } from '@weasel-js/core';
|
|
4
|
+
import { Vec2 as Vec2$1 } from '@weasel-js/core/math';
|
|
4
5
|
import * as react from 'react';
|
|
5
6
|
import '@weasel-js/geom';
|
|
6
|
-
import '@weasel-js/core/math';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* `DiagramEdge` — a connection between two participants.
|
|
@@ -54,9 +54,9 @@ interface RouteRequest {
|
|
|
54
54
|
/** A router returns the points the edge runs through, `from.point` first and
|
|
55
55
|
* `to.point` last. Turning those into a `Path` is `edgePath`'s job, so a
|
|
56
56
|
* router never has to know about path encodings. */
|
|
57
|
-
type Router = (req: RouteRequest) => readonly Vec2[];
|
|
57
|
+
type Router$1 = (req: RouteRequest) => readonly Vec2[];
|
|
58
58
|
/** The straight run between the two ends, through any waypoints. */
|
|
59
|
-
declare const straight: Router;
|
|
59
|
+
declare const straight: Router$1;
|
|
60
60
|
/**
|
|
61
61
|
* An axis-aligned route: leave along the departing end's normal and arrive
|
|
62
62
|
* against the receiving one's.
|
|
@@ -67,7 +67,7 @@ declare const straight: Router;
|
|
|
67
67
|
* shape — a route that lands on a west-facing port from above puts its marker
|
|
68
68
|
* across the corner, which reads as aimed at nothing.
|
|
69
69
|
*/
|
|
70
|
-
declare const orthogonal: Router;
|
|
70
|
+
declare const orthogonal: Router$1;
|
|
71
71
|
/**
|
|
72
72
|
* A smooth route, sampled into points.
|
|
73
73
|
*
|
|
@@ -79,9 +79,9 @@ declare const orthogonal: Router;
|
|
|
79
79
|
* every router returns the same thing; `edgePath` is free to emit curves later
|
|
80
80
|
* without changing the contract.
|
|
81
81
|
*/
|
|
82
|
-
declare const bezier: Router;
|
|
82
|
+
declare const bezier: Router$1;
|
|
83
83
|
/** The routers this package ships. A consumer's own go in the same shape. */
|
|
84
|
-
declare const ROUTERS: Readonly<Record<string, Router>>;
|
|
84
|
+
declare const ROUTERS: Readonly<Record<string, Router$1>>;
|
|
85
85
|
/** The edge trait on a node's data, or `null`. */
|
|
86
86
|
declare function diagramEdgeOf(node: {
|
|
87
87
|
data: unknown;
|
|
@@ -98,7 +98,7 @@ declare function resolveEnd<TPose>(end: EdgeEnd, dep: DerivedDep<TPose>, toward:
|
|
|
98
98
|
/** Options for {@link edgeDerivePath}. */
|
|
99
99
|
interface EdgeRouteOptions<TPose> extends PortsOptions<TPose> {
|
|
100
100
|
/** Routers by key. Defaults to {@link ROUTERS}. */
|
|
101
|
-
routers?: Readonly<Record<string, Router>>;
|
|
101
|
+
routers?: Readonly<Record<string, Router$1>>;
|
|
102
102
|
}
|
|
103
103
|
/**
|
|
104
104
|
* A `derivePath` that routes an edge between its two dependencies.
|
|
@@ -272,7 +272,7 @@ interface ConnectActionOptions<TPose> {
|
|
|
272
272
|
/** Registry key the new edge names, and the router the preview draws with.
|
|
273
273
|
* Default `'straight'`. */
|
|
274
274
|
router?: string;
|
|
275
|
-
routers?: Readonly<Record<string, Router>>;
|
|
275
|
+
routers?: Readonly<Record<string, Router$1>>;
|
|
276
276
|
/**
|
|
277
277
|
* Mints and commits the edge. Called once, on release over a valid port.
|
|
278
278
|
*
|
|
@@ -420,18 +420,51 @@ declare const LABEL_DERIVE_POSE: (node: {
|
|
|
420
420
|
/**
|
|
421
421
|
* `diagramScene` — a laid-out diagram from plain `{ nodes, edges }`.
|
|
422
422
|
*
|
|
423
|
-
*
|
|
424
|
-
*
|
|
423
|
+
* Every box is a `buildBody` body, so a data node can say anything a body
|
|
424
|
+
* can: outline, rows, padding, ports. Sizes are estimated from character
|
|
425
|
+
* counts unless `measure` is given, so layout runs without a canvas and gives
|
|
426
|
+
* the same answer in node and in a browser.
|
|
425
427
|
*/
|
|
426
428
|
|
|
427
429
|
interface DataNode {
|
|
428
430
|
id: string;
|
|
429
|
-
|
|
431
|
+
/** Shorthand for one `label` row per line. Ignored when `rows` is given. */
|
|
432
|
+
lines?: readonly string[];
|
|
433
|
+
rows?: readonly Row[];
|
|
434
|
+
/** Default `DiagramSceneOptions.outline`, which defaults to `'rect'`. */
|
|
435
|
+
outline?: Outline;
|
|
436
|
+
/** Perimeter ports, replacing the four compass midpoints. */
|
|
437
|
+
ports?: readonly PortSpec[];
|
|
438
|
+
/** Layout leaves this node at `at`. */
|
|
439
|
+
pinned?: boolean;
|
|
440
|
+
/** Where the node starts, before layout. Unset, nodes start on the
|
|
441
|
+
* diagonal in source order, which is what within-rank order is seeded
|
|
442
|
+
* from. */
|
|
443
|
+
at?: Vec2$1;
|
|
444
|
+
/** The smallest the box may be. Its content grows it past this. */
|
|
445
|
+
width?: number;
|
|
446
|
+
height?: number;
|
|
447
|
+
/** Default `DiagramSceneOptions.padding`. */
|
|
448
|
+
padding?: number;
|
|
449
|
+
/** Default `DiagramSceneOptions.gap`. */
|
|
450
|
+
gap?: number;
|
|
451
|
+
/** Default `DiagramSceneOptions.verticalAlign`. */
|
|
452
|
+
verticalAlign?: BodySpec['verticalAlign'];
|
|
430
453
|
}
|
|
431
454
|
interface DataEdge {
|
|
432
455
|
from: string;
|
|
433
456
|
to: string;
|
|
457
|
+
/** The port to leave from or arrive at. Unset, the end facing the other
|
|
458
|
+
* node most directly. */
|
|
459
|
+
fromPort?: string;
|
|
460
|
+
toPort?: string;
|
|
434
461
|
label?: string;
|
|
462
|
+
/** Where along the edge the label sits. Default `DiagramSceneOptions.labelPlacement`. */
|
|
463
|
+
labelPlacement?: DiagramLabel;
|
|
464
|
+
/** Default `DiagramSceneOptions.router`. */
|
|
465
|
+
router?: Router;
|
|
466
|
+
/** World points the route passes through. Layout does not move them. */
|
|
467
|
+
waypoints?: readonly Vec2$1[];
|
|
435
468
|
}
|
|
436
469
|
interface DiagramData {
|
|
437
470
|
nodes: readonly DataNode[];
|
|
@@ -442,11 +475,25 @@ interface NodeStyle {
|
|
|
442
475
|
stroke: string;
|
|
443
476
|
text: string;
|
|
444
477
|
strokeWidth?: number;
|
|
478
|
+
dash?: number[];
|
|
445
479
|
}
|
|
446
480
|
interface EdgeStyle {
|
|
447
481
|
stroke: string;
|
|
448
482
|
width?: number;
|
|
483
|
+
dash?: number[];
|
|
484
|
+
/** `null` for none. Default none. */
|
|
485
|
+
markerStart?: MarkerRef | null;
|
|
486
|
+
/** `null` for none. Default `'arrow'`. */
|
|
487
|
+
markerEnd?: MarkerRef | null;
|
|
488
|
+
/** Default `stroke`. */
|
|
489
|
+
label?: string;
|
|
449
490
|
}
|
|
491
|
+
type Router = 'straight' | 'bezier' | 'orthogonal';
|
|
492
|
+
type TextStyle = {
|
|
493
|
+
fontFamily: string;
|
|
494
|
+
fontSize: number;
|
|
495
|
+
fontWeight?: number;
|
|
496
|
+
};
|
|
450
497
|
interface DiagramSceneData {
|
|
451
498
|
diagram?: DiagramNode | DiagramEdge | {
|
|
452
499
|
label: DiagramLabel;
|
|
@@ -456,27 +503,46 @@ interface DiagramSceneData {
|
|
|
456
503
|
};
|
|
457
504
|
stroke?: Stroke;
|
|
458
505
|
text?: string;
|
|
459
|
-
style?:
|
|
460
|
-
fontFamily: string;
|
|
461
|
-
fontSize: number;
|
|
462
|
-
};
|
|
506
|
+
style?: TextStyle;
|
|
463
507
|
}
|
|
464
508
|
type DiagramSpec = AddNodeSpec<DiagramSceneData, 'main', RectPose>;
|
|
465
509
|
interface DiagramSceneOptions {
|
|
466
|
-
layout
|
|
510
|
+
/** A layout by name, or any `LayoutFn`. Default `'layered'`. `'none'`
|
|
511
|
+
* leaves every node at its `at`. */
|
|
512
|
+
layout?: 'layered' | 'tree' | 'force' | 'none' | LayoutFn;
|
|
513
|
+
/** Merged over `{ order: 'barycenter' }`. */
|
|
467
514
|
layoutOptions?: LayoutOptions;
|
|
468
|
-
|
|
515
|
+
/** Default `'bezier'`. */
|
|
516
|
+
router?: Router;
|
|
517
|
+
/** The text style rows fall back on. Default 12px sans-serif. */
|
|
469
518
|
font?: {
|
|
470
519
|
fontFamily: string;
|
|
471
520
|
fontSize: number;
|
|
472
521
|
};
|
|
522
|
+
/** Measures one run of text. Default an estimate from character count, so
|
|
523
|
+
* layout needs no canvas; pass `canvasMeasure(ctx)` for real widths. */
|
|
524
|
+
measure?: MeasureRowText;
|
|
525
|
+
/** Default `'rect'`. */
|
|
526
|
+
outline?: Outline;
|
|
527
|
+
/** Between a box's outline and its rows. Default 8. */
|
|
528
|
+
padding?: number;
|
|
529
|
+
/** Between adjacent rows. Default 4. */
|
|
530
|
+
gap?: number;
|
|
531
|
+
/** Where a box's rows sit when it is taller than they need. Default `'center'`. */
|
|
532
|
+
verticalAlign?: BodySpec['verticalAlign'];
|
|
533
|
+
/** The narrowest a box may be. Default 64. */
|
|
534
|
+
minWidth?: number;
|
|
535
|
+
/** Where edge labels sit. Default `{ at: 'mid', offset: 9 }`. */
|
|
536
|
+
labelPlacement?: DiagramLabel;
|
|
473
537
|
nodeStyle?: (node: DataNode) => NodeStyle;
|
|
474
538
|
edgeStyle?: (edge: DataEdge) => EdgeStyle;
|
|
475
539
|
}
|
|
476
540
|
declare const edgeIdOf: (e: DataEdge) => string;
|
|
477
|
-
/**
|
|
541
|
+
/** Every spec carries an id — a node's own, `<id>/<k>` for its text, and
|
|
542
|
+
* `<edge id>/label` — so a later call's specs can be reconciled against this
|
|
543
|
+
* one's. Throws on a repeated node id, which names two nodes as one. An edge whose
|
|
478
544
|
* end is not a node is dropped, and so is a repeat of an earlier edge with
|
|
479
|
-
* the same ends and label: it would draw exactly on top of the first. */
|
|
545
|
+
* the same ends, ports and label: it would draw exactly on top of the first. */
|
|
480
546
|
declare function diagramScene(data: DiagramData, opts?: DiagramSceneOptions): DiagramSpec[];
|
|
481
547
|
|
|
482
548
|
/** What a live producer is told, and what it answers with. */
|
|
@@ -752,7 +818,17 @@ declare function diagramShape<TPose>(opts?: DiagramShapeOptions<TPose>): NodeSha
|
|
|
752
818
|
*/
|
|
753
819
|
declare function registerDiagramShape<TPose>(opts?: DiagramShapeOptions<TPose>): () => void;
|
|
754
820
|
|
|
821
|
+
/** Where a moved node now stands. */
|
|
822
|
+
interface NodeMove {
|
|
823
|
+
id: string;
|
|
824
|
+
x: number;
|
|
825
|
+
y: number;
|
|
826
|
+
}
|
|
755
827
|
interface DiagramViewProps {
|
|
828
|
+
/** Every spec needs an id, which `diagramScene` gives them. A new array is
|
|
829
|
+
* reconciled into the scene the view already holds, so the view, the
|
|
830
|
+
* selection and anything moved since stay put unless the new specs change
|
|
831
|
+
* them. Pass a new `key` to start over instead. */
|
|
756
832
|
specs: readonly DiagramSpec[];
|
|
757
833
|
width: number;
|
|
758
834
|
height: number;
|
|
@@ -762,20 +838,57 @@ interface DiagramViewProps {
|
|
|
762
838
|
* picked node reports it again. The canvas keeps the pick even if
|
|
763
839
|
* `selected` does not follow it; only a change to `selected` is pushed in. */
|
|
764
840
|
onSelect?: (id: string | null) => void;
|
|
841
|
+
/** Set to let nodes be dragged. Reports every node a drag or a layout run
|
|
842
|
+
* moved. Store each as the data node's `at` with `pinned: true`, or the
|
|
843
|
+
* next `diagramScene` lays it out again. */
|
|
844
|
+
onMove?: (moves: readonly NodeMove[]) => void;
|
|
845
|
+
/** Set to make ports grabbable. Dragging one port onto another reports the
|
|
846
|
+
* edge it describes and draws nothing; add it to the data to keep it. */
|
|
847
|
+
onConnect?: (edge: DataEdge) => void;
|
|
848
|
+
/** Which ports may be joined. Default: a port may not join itself, and two
|
|
849
|
+
* typed ports must share a type. */
|
|
850
|
+
canConnect?: CanConnect;
|
|
851
|
+
/** How ports look and answer the pointer, and the router a connect's
|
|
852
|
+
* preview draws with. */
|
|
853
|
+
portOptions?: Pick<DiagramContributionOptions<RectPose>, 'fill' | 'stroke' | 'sizePx' | 'hitRadiusPx' | 'cursor' | 'shows' | 'snapRadius' | 'router'>;
|
|
854
|
+
/** How a layout run from {@link DiagramViewApi.layout} behaves: its forces,
|
|
855
|
+
* how many frames an eased layout takes, its easing. */
|
|
856
|
+
live?: Omit<UseLiveLayoutOptions<RectPose>, 'scene' | 'source' | 'algorithm'>;
|
|
765
857
|
/** The smallest scale the initial fit may use. Unset, the whole diagram fits
|
|
766
858
|
* however small that makes it; set, it stops here and the rest is a pan away. */
|
|
767
859
|
minScale?: number;
|
|
860
|
+
/** The largest scale the initial fit may use. Default 1, so a small
|
|
861
|
+
* diagram opens at its own size rather than blown up. */
|
|
862
|
+
maxScale?: number;
|
|
768
863
|
/** Which part of a diagram too big for the box it opens on: its middle
|
|
769
864
|
* (default) or its top-left, where a layered flow begins. */
|
|
770
865
|
anchor?: 'center' | 'start';
|
|
866
|
+
/** Space kept clear around the diagram by the initial fit, in CSS pixels.
|
|
867
|
+
* Default 16. */
|
|
868
|
+
fitPadding?: number;
|
|
869
|
+
/** What the canvas paints behind the diagram. Unset, it is transparent. */
|
|
870
|
+
background?: FillStyle;
|
|
871
|
+
/** The view, controlled. Set it and the initial fit is skipped; pair it
|
|
872
|
+
* with `onViewChange` or panning does nothing. */
|
|
873
|
+
view?: View;
|
|
874
|
+
/** Every view change, from a pan, a zoom or the initial fit. */
|
|
875
|
+
onViewChange?: (view: View) => void;
|
|
771
876
|
className?: string;
|
|
772
877
|
}
|
|
773
|
-
/**
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
878
|
+
/** What a `ref` on `DiagramView` holds. */
|
|
879
|
+
interface DiagramViewApi {
|
|
880
|
+
/** Lay the diagram out again from where its nodes stand, animated. `'force'`
|
|
881
|
+
* (default) relaxes until it settles; any other layout eases to its answer.
|
|
882
|
+
* What moved is reported to `onMove` once the run settles. */
|
|
883
|
+
layout(algorithm?: 'layered' | 'tree' | 'force' | LayoutFn): void;
|
|
884
|
+
/** The run `layout` started: stop it where it stands, or cancel it. */
|
|
885
|
+
live: LiveLayout;
|
|
886
|
+
}
|
|
887
|
+
/** A diagram: drag or wheel to pan, zoom, and pick a node; drag nodes with
|
|
888
|
+
* `onMove`, join ports with `onConnect`. Labels paint only in a registered
|
|
889
|
+
* font family; `diagramScene` defaults to sans-serif, so call
|
|
777
890
|
* `registerCanvasFont('sans-serif')` or text renders blank. */
|
|
778
|
-
declare
|
|
891
|
+
declare const DiagramView: react.ForwardRefExoticComponent<DiagramViewProps & react.RefAttributes<DiagramViewApi>>;
|
|
779
892
|
|
|
780
893
|
/** Keeps a canvas selection and a controlled `selected` prop in step: a prop
|
|
781
894
|
* change is pushed in, and every click reports what the selection holds after
|
|
@@ -783,4 +896,4 @@ declare function DiagramView(props: DiagramViewProps): react.JSX.Element;
|
|
|
783
896
|
* `<SceneCanvas onClick>`. */
|
|
784
897
|
declare function useMirroredSelection(selection: Pick<SelectionApi, 'get' | 'set'>, selected: string | null | undefined, onSelect: ((id: string | null) => void) | undefined): () => void;
|
|
785
898
|
|
|
786
|
-
export { type ApplyLayoutOptions, CONNECT_ACTION_ID, type CanConnect, type ConnectActionOptions, DEFAULT_EDGE_STROKE, DIAGRAM_EDGE, DIAGRAM_LABEL, type DataEdge, type DataNode, type DiagramContributionOptions, type DiagramData, type DiagramEdge, type DiagramLabel, DiagramNode, DiagramNodeLike, DiagramNodeReader, type DiagramSceneData, type DiagramSceneOptions, type DiagramShapeOptions, type DiagramSpec, DiagramView, type DiagramViewProps, EASED_LAYOUTS, EDGE_DERIVE_PATH, type EasedProducerOptions, type EdgeEnd, type EdgeRouteOptions, type EdgeStyle, ForceOptions, type ForceProducerOptions, GRAB_PORT_ACTION_ID, Graph, GraphSource, LABEL_DERIVE_POSE, LAYOUTS, LAYOUT_ACTION_ID, type LabelPoseOptions, type LayoutActionOptions, LayoutFn, LayoutOptions, LayoutResult, type LiveLayout, type LiveLayoutCtx, type LiveLayoutFrame, type LiveLayoutProducer, type NodeStyle, PORT_AFFORDANCE_KIND, PORT_LAYER_ID, type ParticipantPose, type ParticipantScene, type ParticipantSource, type PendingEdge, Port, type PortAffordanceOptions, type PortScratch, PortsOptions, ROUTERS, type RouteRequest, type Router, type UseLiveLayoutOptions, applyLayout, bezier, commitEdgeToScene, connectBinding, createConnectAction, createDiagramContribution, createLayoutAction, createPortAffordance, defaultCanConnect, diagramEdgeOf, diagramLabelOf, diagramPorts, diagramScene, diagramShape, easedProducer, edgeDerivePath, edgeIdOf, forceProducer, grabPortAction, grabPortBindings, labelDerivePose, layoutPoses, orthogonal, portLayer, portScratchOf, registerDiagramShape, resolveEnd, sceneParticipants, straight, useLiveLayout, useMirroredSelection, withDiagramRegistry };
|
|
899
|
+
export { type ApplyLayoutOptions, BodySpec, CONNECT_ACTION_ID, type CanConnect, type ConnectActionOptions, DEFAULT_EDGE_STROKE, DIAGRAM_EDGE, DIAGRAM_LABEL, type DataEdge, type DataNode, type DiagramContributionOptions, type DiagramData, type DiagramEdge, type DiagramLabel, DiagramNode, DiagramNodeLike, DiagramNodeReader, type DiagramSceneData, type DiagramSceneOptions, type DiagramShapeOptions, type DiagramSpec, DiagramView, type DiagramViewApi, type DiagramViewProps, EASED_LAYOUTS, EDGE_DERIVE_PATH, type EasedProducerOptions, type EdgeEnd, type EdgeRouteOptions, type EdgeStyle, ForceOptions, type ForceProducerOptions, GRAB_PORT_ACTION_ID, Graph, GraphSource, LABEL_DERIVE_POSE, LAYOUTS, LAYOUT_ACTION_ID, type LabelPoseOptions, type LayoutActionOptions, LayoutFn, LayoutOptions, LayoutResult, type LiveLayout, type LiveLayoutCtx, type LiveLayoutFrame, type LiveLayoutProducer, MeasureRowText, type NodeMove, type NodeStyle, Outline, PORT_AFFORDANCE_KIND, PORT_LAYER_ID, type ParticipantPose, type ParticipantScene, type ParticipantSource, type PendingEdge, Port, type PortAffordanceOptions, type PortScratch, PortSpec, PortsOptions, ROUTERS, type RouteRequest, type Router$1 as Router, Row, type UseLiveLayoutOptions, applyLayout, bezier, commitEdgeToScene, connectBinding, createConnectAction, createDiagramContribution, createLayoutAction, createPortAffordance, defaultCanConnect, diagramEdgeOf, diagramLabelOf, diagramPorts, diagramScene, diagramShape, easedProducer, edgeDerivePath, edgeIdOf, forceProducer, grabPortAction, grabPortBindings, labelDerivePose, layoutPoses, orthogonal, portLayer, portScratchOf, registerDiagramShape, resolveEnd, sceneParticipants, straight, useLiveLayout, useMirroredSelection, withDiagramRegistry };
|