@pyreon/flow 0.9.0 → 0.11.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/lib/analysis/index.js.html +1 -1
- package/lib/{elk.bundled-B9dPTHTZ.js → elk.bundled-wgxWJMYd.js} +2 -2
- package/lib/elk.bundled-wgxWJMYd.js.map +1 -0
- package/lib/index.js +13 -13
- package/lib/index.js.map +1 -1
- package/lib/types/index.d.ts +13 -13
- package/lib/types/index.d.ts.map +1 -1
- package/package.json +14 -7
- package/src/components/background.tsx +9 -14
- package/src/components/controls.tsx +11 -18
- package/src/components/flow-component.tsx +67 -117
- package/src/components/handle.tsx +8 -8
- package/src/components/minimap.tsx +10 -27
- package/src/components/node-resizer.tsx +28 -28
- package/src/components/node-toolbar.tsx +12 -21
- package/src/components/panel.tsx +9 -9
- package/src/edges.ts +16 -47
- package/src/flow.ts +32 -88
- package/src/index.ts +17 -17
- package/src/layout.ts +23 -31
- package/src/tests/flow-advanced.test.ts +191 -200
- package/src/tests/flow.test.ts +418 -468
- package/src/types.ts +28 -42
- package/lib/elk.bundled-B9dPTHTZ.js.map +0 -1
package/lib/types/index.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ interface Viewport {
|
|
|
16
16
|
y: number;
|
|
17
17
|
zoom: number;
|
|
18
18
|
}
|
|
19
|
-
type HandleType =
|
|
19
|
+
type HandleType = "source" | "target";
|
|
20
20
|
declare enum Position {
|
|
21
21
|
Top = "top",
|
|
22
22
|
Right = "right",
|
|
@@ -54,7 +54,7 @@ interface FlowNode<TData = Record<string, unknown>> {
|
|
|
54
54
|
/** Whether this node is a group */
|
|
55
55
|
group?: boolean;
|
|
56
56
|
}
|
|
57
|
-
type EdgeType =
|
|
57
|
+
type EdgeType = "bezier" | "smoothstep" | "straight" | "step";
|
|
58
58
|
interface FlowEdge {
|
|
59
59
|
id?: string;
|
|
60
60
|
source: string;
|
|
@@ -81,19 +81,19 @@ type ConnectionRule = Record<string, {
|
|
|
81
81
|
outputs: string[];
|
|
82
82
|
}>;
|
|
83
83
|
type NodeChange = {
|
|
84
|
-
type:
|
|
84
|
+
type: "position";
|
|
85
85
|
id: string;
|
|
86
86
|
position: XYPosition;
|
|
87
87
|
} | {
|
|
88
|
-
type:
|
|
88
|
+
type: "dimensions";
|
|
89
89
|
id: string;
|
|
90
90
|
dimensions: Dimensions;
|
|
91
91
|
} | {
|
|
92
|
-
type:
|
|
92
|
+
type: "select";
|
|
93
93
|
id: string;
|
|
94
94
|
selected: boolean;
|
|
95
95
|
} | {
|
|
96
|
-
type:
|
|
96
|
+
type: "remove";
|
|
97
97
|
id: string;
|
|
98
98
|
};
|
|
99
99
|
interface EdgePathResult {
|
|
@@ -297,16 +297,16 @@ interface FlowInstance {
|
|
|
297
297
|
/** Dispose all listeners and clean up */
|
|
298
298
|
dispose: () => void;
|
|
299
299
|
}
|
|
300
|
-
type LayoutAlgorithm =
|
|
300
|
+
type LayoutAlgorithm = "layered" | "force" | "stress" | "tree" | "radial" | "box" | "rectpacking";
|
|
301
301
|
interface LayoutOptions {
|
|
302
302
|
/** Layout direction — default: 'DOWN' */
|
|
303
|
-
direction?:
|
|
303
|
+
direction?: "UP" | "DOWN" | "LEFT" | "RIGHT";
|
|
304
304
|
/** Spacing between nodes — default: 50 */
|
|
305
305
|
nodeSpacing?: number;
|
|
306
306
|
/** Spacing between layers — default: 80 */
|
|
307
307
|
layerSpacing?: number;
|
|
308
308
|
/** Edge routing — default: 'orthogonal' */
|
|
309
|
-
edgeRouting?:
|
|
309
|
+
edgeRouting?: "orthogonal" | "splines" | "polyline";
|
|
310
310
|
/** Whether to animate the layout transition — default: true */
|
|
311
311
|
animate?: boolean;
|
|
312
312
|
/** Animation duration in ms — default: 300 */
|
|
@@ -319,7 +319,7 @@ interface FlowProps {
|
|
|
319
319
|
children?: VNodeChild;
|
|
320
320
|
}
|
|
321
321
|
interface BackgroundProps {
|
|
322
|
-
variant?:
|
|
322
|
+
variant?: "dots" | "lines" | "cross";
|
|
323
323
|
gap?: number;
|
|
324
324
|
size?: number;
|
|
325
325
|
color?: string;
|
|
@@ -337,10 +337,10 @@ interface ControlsProps {
|
|
|
337
337
|
showZoomOut?: boolean;
|
|
338
338
|
showFitView?: boolean;
|
|
339
339
|
showLock?: boolean;
|
|
340
|
-
position?:
|
|
340
|
+
position?: "top-left" | "top-right" | "bottom-left" | "bottom-right";
|
|
341
341
|
}
|
|
342
342
|
interface PanelProps {
|
|
343
|
-
position?:
|
|
343
|
+
position?: "top-left" | "top-right" | "bottom-left" | "bottom-right";
|
|
344
344
|
style?: string;
|
|
345
345
|
class?: string;
|
|
346
346
|
children?: VNodeChild;
|
|
@@ -503,7 +503,7 @@ declare function NodeResizer(props: NodeResizerProps): VNodeChild;
|
|
|
503
503
|
//#region src/components/node-toolbar.d.ts
|
|
504
504
|
interface NodeToolbarProps {
|
|
505
505
|
/** Position relative to node — default: 'top' */
|
|
506
|
-
position?:
|
|
506
|
+
position?: "top" | "bottom" | "left" | "right";
|
|
507
507
|
/** Offset from node in px — default: 8 */
|
|
508
508
|
offset?: number;
|
|
509
509
|
/** Only show when node is selected — default: true */
|
package/lib/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index2.d.ts","names":[],"sources":["../../../src/types.ts","../../../src/components/background.tsx","../../../src/components/controls.tsx","../../../src/components/flow-component.tsx","../../../src/components/handle.tsx","../../../src/components/minimap.tsx","../../../src/components/node-resizer.tsx","../../../src/components/node-toolbar.tsx","../../../src/components/panel.tsx","../../../src/edges.ts","../../../src/flow.ts","../../../src/layout.ts","../../../src/styles.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index2.d.ts","names":[],"sources":["../../../src/types.ts","../../../src/components/background.tsx","../../../src/components/controls.tsx","../../../src/components/flow-component.tsx","../../../src/components/handle.tsx","../../../src/components/minimap.tsx","../../../src/components/node-resizer.tsx","../../../src/components/node-toolbar.tsx","../../../src/components/panel.tsx","../../../src/edges.ts","../../../src/flow.ts","../../../src/layout.ts","../../../src/styles.ts"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pyreon/flow",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "Reactive flow diagrams for Pyreon — signal-native nodes, edges, pan/zoom, auto-layout",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
|
-
"url": "https://github.com/pyreon/
|
|
9
|
-
"directory": "packages/flow"
|
|
8
|
+
"url": "https://github.com/pyreon/pyreon.git",
|
|
9
|
+
"directory": "packages/fundamentals/flow"
|
|
10
10
|
},
|
|
11
11
|
"homepage": "https://github.com/pyreon/fundamentals/tree/main/packages/flow#readme",
|
|
12
12
|
"bugs": {
|
|
13
|
-
"url": "https://github.com/pyreon/
|
|
13
|
+
"url": "https://github.com/pyreon/pyreon/issues"
|
|
14
14
|
},
|
|
15
15
|
"publishConfig": {
|
|
16
16
|
"access": "public"
|
|
@@ -37,13 +37,20 @@
|
|
|
37
37
|
"build": "vl_rolldown_build",
|
|
38
38
|
"dev": "vl_rolldown_build-watch",
|
|
39
39
|
"test": "vitest run",
|
|
40
|
-
"typecheck": "tsc --noEmit"
|
|
40
|
+
"typecheck": "tsc --noEmit",
|
|
41
|
+
"lint": "biome check ."
|
|
41
42
|
},
|
|
42
43
|
"dependencies": {
|
|
43
44
|
"elkjs": "^0.9.3"
|
|
44
45
|
},
|
|
45
46
|
"peerDependencies": {
|
|
46
|
-
"@pyreon/core": "
|
|
47
|
-
"@pyreon/reactivity": "
|
|
47
|
+
"@pyreon/core": "^0.11.0",
|
|
48
|
+
"@pyreon/reactivity": "^0.11.0"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@happy-dom/global-registrator": "^20.8.3",
|
|
52
|
+
"@pyreon/core": "^0.11.0",
|
|
53
|
+
"@pyreon/reactivity": "^0.11.0",
|
|
54
|
+
"@vitus-labs/tools-lint": "^1.11.0"
|
|
48
55
|
}
|
|
49
56
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { VNodeChild } from
|
|
2
|
-
import type { BackgroundProps } from
|
|
1
|
+
import type { VNodeChild } from "@pyreon/core"
|
|
2
|
+
import type { BackgroundProps } from "../types"
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Background pattern for the flow canvas.
|
|
@@ -13,11 +13,11 @@ import type { BackgroundProps } from '../types'
|
|
|
13
13
|
* ```
|
|
14
14
|
*/
|
|
15
15
|
export function Background(props: BackgroundProps): VNodeChild {
|
|
16
|
-
const { variant =
|
|
16
|
+
const { variant = "dots", gap = 20, size = 1, color = "#ddd" } = props
|
|
17
17
|
|
|
18
18
|
const patternId = `flow-bg-${variant}`
|
|
19
19
|
|
|
20
|
-
if (variant ===
|
|
20
|
+
if (variant === "dots") {
|
|
21
21
|
return (
|
|
22
22
|
<svg
|
|
23
23
|
role="img"
|
|
@@ -32,14 +32,9 @@ export function Background(props: BackgroundProps): VNodeChild {
|
|
|
32
32
|
y="0"
|
|
33
33
|
width={String(gap)}
|
|
34
34
|
height={String(gap)}
|
|
35
|
-
patternUnits
|
|
35
|
+
{...{ patternUnits: "userSpaceOnUse" }}
|
|
36
36
|
>
|
|
37
|
-
<circle
|
|
38
|
-
cx={String(size)}
|
|
39
|
-
cy={String(size)}
|
|
40
|
-
r={String(size)}
|
|
41
|
-
fill={color}
|
|
42
|
-
/>
|
|
37
|
+
<circle cx={String(size)} cy={String(size)} r={String(size)} fill={color} />
|
|
43
38
|
</pattern>
|
|
44
39
|
</defs>
|
|
45
40
|
<rect width="100%" height="100%" fill={`url(#${patternId})`} />
|
|
@@ -47,7 +42,7 @@ export function Background(props: BackgroundProps): VNodeChild {
|
|
|
47
42
|
)
|
|
48
43
|
}
|
|
49
44
|
|
|
50
|
-
if (variant ===
|
|
45
|
+
if (variant === "lines") {
|
|
51
46
|
return (
|
|
52
47
|
<svg
|
|
53
48
|
role="img"
|
|
@@ -62,7 +57,7 @@ export function Background(props: BackgroundProps): VNodeChild {
|
|
|
62
57
|
y="0"
|
|
63
58
|
width={String(gap)}
|
|
64
59
|
height={String(gap)}
|
|
65
|
-
patternUnits
|
|
60
|
+
{...{ patternUnits: "userSpaceOnUse" }}
|
|
66
61
|
>
|
|
67
62
|
<line
|
|
68
63
|
x1="0"
|
|
@@ -102,7 +97,7 @@ export function Background(props: BackgroundProps): VNodeChild {
|
|
|
102
97
|
y="0"
|
|
103
98
|
width={String(gap)}
|
|
104
99
|
height={String(gap)}
|
|
105
|
-
patternUnits
|
|
100
|
+
{...{ patternUnits: "userSpaceOnUse" }}
|
|
106
101
|
>
|
|
107
102
|
<line
|
|
108
103
|
x1={String(gap / 2 - size * 2)}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { VNodeChild } from
|
|
2
|
-
import type { ControlsProps, FlowInstance } from
|
|
1
|
+
import type { VNodeChild } from "@pyreon/core"
|
|
2
|
+
import type { ControlsProps, FlowInstance } from "../types"
|
|
3
3
|
|
|
4
4
|
const positionStyles: Record<string, string> = {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
"top-left": "top: 10px; left: 10px;",
|
|
6
|
+
"top-right": "top: 10px; right: 10px;",
|
|
7
|
+
"bottom-left": "bottom: 10px; left: 10px;",
|
|
8
|
+
"bottom-right": "bottom: 10px; right: 10px;",
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
// Simple SVG icons
|
|
@@ -80,23 +80,21 @@ const LockIcon = () => (
|
|
|
80
80
|
* </Flow>
|
|
81
81
|
* ```
|
|
82
82
|
*/
|
|
83
|
-
export function Controls(
|
|
84
|
-
props: ControlsProps & { instance?: FlowInstance },
|
|
85
|
-
): VNodeChild {
|
|
83
|
+
export function Controls(props: ControlsProps & { instance?: FlowInstance }): VNodeChild {
|
|
86
84
|
const {
|
|
87
85
|
showZoomIn = true,
|
|
88
86
|
showZoomOut = true,
|
|
89
87
|
showFitView = true,
|
|
90
88
|
showLock = false,
|
|
91
|
-
position =
|
|
89
|
+
position = "bottom-left",
|
|
92
90
|
instance,
|
|
93
91
|
} = props
|
|
94
92
|
|
|
95
93
|
if (!instance) return null
|
|
96
94
|
|
|
97
|
-
const baseStyle = `position: absolute; ${positionStyles[position] ?? positionStyles[
|
|
95
|
+
const baseStyle = `position: absolute; ${positionStyles[position] ?? positionStyles["bottom-left"]} display: flex; flex-direction: column; gap: 2px; z-index: 5; background: white; border: 1px solid #ddd; border-radius: 6px; padding: 2px; box-shadow: 0 1px 4px rgba(0,0,0,0.08);`
|
|
98
96
|
const btnStyle =
|
|
99
|
-
|
|
97
|
+
"width: 28px; height: 28px; display: flex; align-items: center; justify-content: center; border: none; background: transparent; border-radius: 4px; cursor: pointer; color: #555; padding: 0;"
|
|
100
98
|
|
|
101
99
|
return () => {
|
|
102
100
|
const zoomPercent = Math.round(instance.zoom() * 100)
|
|
@@ -104,12 +102,7 @@ export function Controls(
|
|
|
104
102
|
return (
|
|
105
103
|
<div class="pyreon-flow-controls" style={baseStyle}>
|
|
106
104
|
{showZoomIn && (
|
|
107
|
-
<button
|
|
108
|
-
type="button"
|
|
109
|
-
style={btnStyle}
|
|
110
|
-
title="Zoom in"
|
|
111
|
-
onClick={() => instance.zoomIn()}
|
|
112
|
-
>
|
|
105
|
+
<button type="button" style={btnStyle} title="Zoom in" onClick={() => instance.zoomIn()}>
|
|
113
106
|
<ZoomInIcon />
|
|
114
107
|
</button>
|
|
115
108
|
)}
|