@principal-ai/subsystems-react 0.21.0 → 0.21.1
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/package.json +1 -1
- package/dist/components/ConfigurationSelector.d.ts +0 -35
- package/dist/components/ConfigurationSelector.d.ts.map +0 -1
- package/dist/components/ConfigurationSelector.js +0 -63
- package/dist/components/ConfigurationSelector.js.map +0 -1
- package/dist/components/GraphRenderer.d.ts +0 -295
- package/dist/components/GraphRenderer.d.ts.map +0 -1
- package/dist/components/GraphRenderer.js +0 -2008
- package/dist/components/GraphRenderer.js.map +0 -1
- package/dist/components/MultiCanvasRenderer.d.ts +0 -75
- package/dist/components/MultiCanvasRenderer.d.ts.map +0 -1
- package/dist/components/MultiCanvasRenderer.js +0 -203
- package/dist/components/MultiCanvasRenderer.js.map +0 -1
- package/dist/components/NodeTooltip.d.ts +0 -24
- package/dist/components/NodeTooltip.d.ts.map +0 -1
- package/dist/components/NodeTooltip.js +0 -160
- package/dist/components/NodeTooltip.js.map +0 -1
- package/dist/components/SelectionSidebar.d.ts +0 -18
- package/dist/components/SelectionSidebar.d.ts.map +0 -1
- package/dist/components/SelectionSidebar.js +0 -190
- package/dist/components/SelectionSidebar.js.map +0 -1
- package/dist/components/SequenceDiagramRenderer.d.ts +0 -77
- package/dist/components/SequenceDiagramRenderer.d.ts.map +0 -1
- package/dist/components/SequenceDiagramRenderer.js +0 -604
- package/dist/components/SequenceDiagramRenderer.js.map +0 -1
- package/dist/components/WorkflowSequenceDiagram.d.ts +0 -63
- package/dist/components/WorkflowSequenceDiagram.d.ts.map +0 -1
- package/dist/components/WorkflowSequenceDiagram.js +0 -147
- package/dist/components/WorkflowSequenceDiagram.js.map +0 -1
- package/dist/components/dashboard/DashboardRenderer.d.ts +0 -10
- package/dist/components/dashboard/DashboardRenderer.d.ts.map +0 -1
- package/dist/components/dashboard/DashboardRenderer.js +0 -179
- package/dist/components/dashboard/DashboardRenderer.js.map +0 -1
- package/dist/components/dashboard/MetricPanel.d.ts +0 -10
- package/dist/components/dashboard/MetricPanel.d.ts.map +0 -1
- package/dist/components/dashboard/MetricPanel.js +0 -103
- package/dist/components/dashboard/MetricPanel.js.map +0 -1
- package/dist/components/dashboard/MockDataProvider.d.ts +0 -30
- package/dist/components/dashboard/MockDataProvider.d.ts.map +0 -1
- package/dist/components/dashboard/MockDataProvider.js +0 -270
- package/dist/components/dashboard/MockDataProvider.js.map +0 -1
- package/dist/components/dashboard/components/BarChart.d.ts +0 -10
- package/dist/components/dashboard/components/BarChart.d.ts.map +0 -1
- package/dist/components/dashboard/components/BarChart.js +0 -167
- package/dist/components/dashboard/components/BarChart.js.map +0 -1
- package/dist/components/dashboard/components/LineChart.d.ts +0 -10
- package/dist/components/dashboard/components/LineChart.d.ts.map +0 -1
- package/dist/components/dashboard/components/LineChart.js +0 -141
- package/dist/components/dashboard/components/LineChart.js.map +0 -1
- package/dist/components/dashboard/components/MetricCard.d.ts +0 -9
- package/dist/components/dashboard/components/MetricCard.d.ts.map +0 -1
- package/dist/components/dashboard/components/MetricCard.js +0 -163
- package/dist/components/dashboard/components/MetricCard.js.map +0 -1
- package/dist/components/dashboard/components/SourceLink.d.ts +0 -9
- package/dist/components/dashboard/components/SourceLink.d.ts.map +0 -1
- package/dist/components/dashboard/components/SourceLink.js +0 -39
- package/dist/components/dashboard/components/SourceLink.js.map +0 -1
- package/dist/components/dashboard/components/TimeRangeSelector.d.ts +0 -9
- package/dist/components/dashboard/components/TimeRangeSelector.d.ts.map +0 -1
- package/dist/components/dashboard/components/TimeRangeSelector.js +0 -167
- package/dist/components/dashboard/components/TimeRangeSelector.js.map +0 -1
- package/dist/components/dashboard/components/index.d.ts +0 -6
- package/dist/components/dashboard/components/index.d.ts.map +0 -1
- package/dist/components/dashboard/components/index.js +0 -6
- package/dist/components/dashboard/components/index.js.map +0 -1
- package/dist/components/dashboard/index.d.ts +0 -6
- package/dist/components/dashboard/index.d.ts.map +0 -1
- package/dist/components/dashboard/index.js +0 -8
- package/dist/components/dashboard/index.js.map +0 -1
- package/dist/components/dashboard/types.d.ts +0 -74
- package/dist/components/dashboard/types.d.ts.map +0 -1
- package/dist/components/dashboard/types.js +0 -8
- package/dist/components/dashboard/types.js.map +0 -1
- package/dist/components/state-view/PipelineView.d.ts +0 -14
- package/dist/components/state-view/PipelineView.d.ts.map +0 -1
- package/dist/components/state-view/PipelineView.js +0 -195
- package/dist/components/state-view/PipelineView.js.map +0 -1
- package/dist/components/state-view/index.d.ts +0 -14
- package/dist/components/state-view/index.d.ts.map +0 -1
- package/dist/components/state-view/index.js +0 -12
- package/dist/components/state-view/index.js.map +0 -1
- package/dist/components/state-view/types.d.ts +0 -188
- package/dist/components/state-view/types.d.ts.map +0 -1
- package/dist/components/state-view/types.js +0 -10
- package/dist/components/state-view/types.js.map +0 -1
- package/dist/components/state-view/useStateView.d.ts +0 -32
- package/dist/components/state-view/useStateView.d.ts.map +0 -1
- package/dist/components/state-view/useStateView.js +0 -129
- package/dist/components/state-view/useStateView.js.map +0 -1
- package/dist/contexts/GraphEditContext.d.ts +0 -20
- package/dist/contexts/GraphEditContext.d.ts.map +0 -1
- package/dist/contexts/GraphEditContext.js +0 -8
- package/dist/contexts/GraphEditContext.js.map +0 -1
- package/dist/contexts/TooltipPortalContext.d.ts +0 -8
- package/dist/contexts/TooltipPortalContext.d.ts.map +0 -1
- package/dist/contexts/TooltipPortalContext.js +0 -8
- package/dist/contexts/TooltipPortalContext.js.map +0 -1
- package/dist/edges/CustomEdge.d.ts +0 -24
- package/dist/edges/CustomEdge.d.ts.map +0 -1
- package/dist/edges/CustomEdge.js +0 -222
- package/dist/edges/CustomEdge.js.map +0 -1
- package/dist/edges/GenericEdge.d.ts +0 -18
- package/dist/edges/GenericEdge.d.ts.map +0 -1
- package/dist/edges/GenericEdge.js +0 -10
- package/dist/edges/GenericEdge.js.map +0 -1
- package/dist/graphify/kind.d.ts +0 -23
- package/dist/graphify/kind.d.ts.map +0 -1
- package/dist/graphify/kind.js +0 -77
- package/dist/graphify/kind.js.map +0 -1
- package/dist/hooks/usePathBasedEvents.d.ts +0 -42
- package/dist/hooks/usePathBasedEvents.d.ts.map +0 -1
- package/dist/hooks/usePathBasedEvents.js +0 -119
- package/dist/hooks/usePathBasedEvents.js.map +0 -1
- package/dist/hooks/useSequenceLayout.d.ts +0 -186
- package/dist/hooks/useSequenceLayout.d.ts.map +0 -1
- package/dist/hooks/useSequenceLayout.js +0 -327
- package/dist/hooks/useSequenceLayout.js.map +0 -1
- package/dist/hooks/useUndoRedo.d.ts +0 -80
- package/dist/hooks/useUndoRedo.d.ts.map +0 -1
- package/dist/hooks/useUndoRedo.js +0 -70
- package/dist/hooks/useUndoRedo.js.map +0 -1
- package/dist/nodes/CustomNode.d.ts +0 -28
- package/dist/nodes/CustomNode.d.ts.map +0 -1
- package/dist/nodes/CustomNode.js +0 -820
- package/dist/nodes/CustomNode.js.map +0 -1
- package/dist/nodes/GenericNode.d.ts +0 -20
- package/dist/nodes/GenericNode.d.ts.map +0 -1
- package/dist/nodes/GenericNode.js +0 -20
- package/dist/nodes/GenericNode.js.map +0 -1
- package/dist/nodes/otel/OtelBoundaryNode.d.ts +0 -55
- package/dist/nodes/otel/OtelBoundaryNode.d.ts.map +0 -1
- package/dist/nodes/otel/OtelBoundaryNode.js +0 -81
- package/dist/nodes/otel/OtelBoundaryNode.js.map +0 -1
- package/dist/nodes/otel/OtelEventNode.d.ts +0 -59
- package/dist/nodes/otel/OtelEventNode.d.ts.map +0 -1
- package/dist/nodes/otel/OtelEventNode.js +0 -82
- package/dist/nodes/otel/OtelEventNode.js.map +0 -1
- package/dist/nodes/otel/OtelResourceNode.d.ts +0 -53
- package/dist/nodes/otel/OtelResourceNode.d.ts.map +0 -1
- package/dist/nodes/otel/OtelResourceNode.js +0 -105
- package/dist/nodes/otel/OtelResourceNode.js.map +0 -1
- package/dist/nodes/otel/OtelScopeNode.d.ts +0 -53
- package/dist/nodes/otel/OtelScopeNode.d.ts.map +0 -1
- package/dist/nodes/otel/OtelScopeNode.js +0 -81
- package/dist/nodes/otel/OtelScopeNode.js.map +0 -1
- package/dist/nodes/otel/OtelSpanConventionNode.d.ts +0 -61
- package/dist/nodes/otel/OtelSpanConventionNode.d.ts.map +0 -1
- package/dist/nodes/otel/OtelSpanConventionNode.js +0 -131
- package/dist/nodes/otel/OtelSpanConventionNode.js.map +0 -1
- package/dist/nodes/otel/index.d.ts +0 -17
- package/dist/nodes/otel/index.d.ts.map +0 -1
- package/dist/nodes/otel/index.js +0 -13
- package/dist/nodes/otel/index.js.map +0 -1
- package/dist/nodes/otel/shared/NodeBadges.d.ts +0 -10
- package/dist/nodes/otel/shared/NodeBadges.d.ts.map +0 -1
- package/dist/nodes/otel/shared/NodeBadges.js +0 -178
- package/dist/nodes/otel/shared/NodeBadges.js.map +0 -1
- package/dist/nodes/otel/shared/NodeContent.d.ts +0 -10
- package/dist/nodes/otel/shared/NodeContent.d.ts.map +0 -1
- package/dist/nodes/otel/shared/NodeContent.js +0 -96
- package/dist/nodes/otel/shared/NodeContent.js.map +0 -1
- package/dist/nodes/otel/shared/index.d.ts +0 -8
- package/dist/nodes/otel/shared/index.d.ts.map +0 -1
- package/dist/nodes/otel/shared/index.js +0 -8
- package/dist/nodes/otel/shared/index.js.map +0 -1
- package/dist/nodes/otel/shared/types.d.ts +0 -129
- package/dist/nodes/otel/shared/types.d.ts.map +0 -1
- package/dist/nodes/otel/shared/types.js +0 -5
- package/dist/nodes/otel/shared/types.js.map +0 -1
- package/dist/nodes/otel/shared/useNodeBehavior.d.ts +0 -42
- package/dist/nodes/otel/shared/useNodeBehavior.d.ts.map +0 -1
- package/dist/nodes/otel/shared/useNodeBehavior.js +0 -61
- package/dist/nodes/otel/shared/useNodeBehavior.js.map +0 -1
- package/dist/pierre/PierreThroughlineCodeView.d.ts +0 -22
- package/dist/pierre/PierreThroughlineCodeView.d.ts.map +0 -1
- package/dist/pierre/PierreThroughlineCodeView.js +0 -206
- package/dist/pierre/PierreThroughlineCodeView.js.map +0 -1
- package/dist/subsystem/SubsystemCarousel.d.ts +0 -36
- package/dist/subsystem/SubsystemCarousel.d.ts.map +0 -1
- package/dist/subsystem/SubsystemCarousel.js +0 -163
- package/dist/subsystem/SubsystemCarousel.js.map +0 -1
- package/dist/utils/animationMapping.d.ts +0 -53
- package/dist/utils/animationMapping.d.ts.map +0 -1
- package/dist/utils/animationMapping.js +0 -126
- package/dist/utils/animationMapping.js.map +0 -1
- package/dist/utils/canvasBounds.d.ts +0 -50
- package/dist/utils/canvasBounds.d.ts.map +0 -1
- package/dist/utils/canvasBounds.js +0 -88
- package/dist/utils/canvasBounds.js.map +0 -1
- package/dist/utils/graphConverter.d.ts +0 -18
- package/dist/utils/graphConverter.d.ts.map +0 -1
- package/dist/utils/graphConverter.js +0 -114
- package/dist/utils/graphConverter.js.map +0 -1
- package/dist/utils/iconResolver.d.ts +0 -29
- package/dist/utils/iconResolver.d.ts.map +0 -1
- package/dist/utils/iconResolver.js +0 -30
- package/dist/utils/iconResolver.js.map +0 -1
- package/dist/utils/orientationUtils.d.ts +0 -19
- package/dist/utils/orientationUtils.d.ts.map +0 -1
- package/dist/utils/orientationUtils.js +0 -62
- package/dist/utils/orientationUtils.js.map +0 -1
|
@@ -1,604 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* Sequence Diagram Renderer
|
|
4
|
-
*
|
|
5
|
-
* Renders events in swimlane-based sequence diagram layout.
|
|
6
|
-
* Uses namespaces to determine swimlanes and event order for vertical positioning.
|
|
7
|
-
*/
|
|
8
|
-
import { useCallback, useMemo, useState } from 'react';
|
|
9
|
-
import { ReactFlow, Background, BackgroundVariant, Controls, ReactFlowProvider, useViewport, useStore, Handle, Position, BaseEdge, EdgeLabelRenderer, getBezierPath, } from '@xyflow/react';
|
|
10
|
-
import { useTheme } from '@principal-ade/industry-theme';
|
|
11
|
-
// CSS import removed - consumers should import '@xyflow/react/dist/style.css' in their app
|
|
12
|
-
import { useSequenceLayout, } from '../hooks/useSequenceLayout';
|
|
13
|
-
/**
|
|
14
|
-
* Minimal marker node for arrow-centric sequence diagrams
|
|
15
|
-
* Invisible - just used for positioning, selection is shown on edge labels
|
|
16
|
-
* Can optionally show a label for better clickability
|
|
17
|
-
*/
|
|
18
|
-
function SequenceMarkerNode({ data, selected }) {
|
|
19
|
-
const { theme } = useTheme();
|
|
20
|
-
const showLabel = data.showEventLabels === true; // Only show if explicitly enabled
|
|
21
|
-
const label = data.label;
|
|
22
|
-
// If labels are shown on nodes, render them
|
|
23
|
-
if (showLabel && label) {
|
|
24
|
-
return (_jsxs("div", { style: {
|
|
25
|
-
width: '100%',
|
|
26
|
-
height: '100%',
|
|
27
|
-
position: 'relative',
|
|
28
|
-
cursor: 'pointer',
|
|
29
|
-
display: 'flex',
|
|
30
|
-
flexDirection: 'column',
|
|
31
|
-
alignItems: 'center',
|
|
32
|
-
justifyContent: 'center',
|
|
33
|
-
}, title: data.fullName, children: [_jsx("div", { style: {
|
|
34
|
-
padding: '6px 12px',
|
|
35
|
-
background: selected ? theme.colors.primary : theme.colors.background,
|
|
36
|
-
color: selected ? theme.colors.background : theme.colors.text,
|
|
37
|
-
border: `2px solid ${selected ? theme.colors.primary : theme.colors.border}`,
|
|
38
|
-
borderRadius: 4,
|
|
39
|
-
fontSize: theme.fontSizes[1],
|
|
40
|
-
fontWeight: selected ? theme.fontWeights.bold : theme.fontWeights.medium,
|
|
41
|
-
fontFamily: theme.fonts.body,
|
|
42
|
-
whiteSpace: 'nowrap',
|
|
43
|
-
pointerEvents: 'none',
|
|
44
|
-
userSelect: 'none',
|
|
45
|
-
transition: 'all 0.2s ease',
|
|
46
|
-
boxShadow: selected ? `0 2px 8px ${theme.colors.primary}40` : 'none',
|
|
47
|
-
}, children: label }), _jsx(Handle, { type: "target", position: Position.Top, style: { visibility: 'hidden' } }), _jsx(Handle, { type: "source", position: Position.Bottom, style: { visibility: 'hidden' } })] }));
|
|
48
|
-
}
|
|
49
|
-
// Default: invisible node (selection shown on edge labels)
|
|
50
|
-
return (_jsxs("div", { style: {
|
|
51
|
-
width: '100%',
|
|
52
|
-
height: '100%',
|
|
53
|
-
opacity: 0,
|
|
54
|
-
cursor: 'pointer',
|
|
55
|
-
}, title: data.fullName, children: [_jsx(Handle, { type: "target", position: Position.Top, style: { visibility: 'hidden' } }), _jsx(Handle, { type: "source", position: Position.Bottom, style: { visibility: 'hidden' } })] }));
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Sequence arrow edge with label (dot to dot)
|
|
59
|
-
*/
|
|
60
|
-
function SequenceArrowEdge({ id, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, label, data, }) {
|
|
61
|
-
const { theme } = useTheme();
|
|
62
|
-
// Use a straight line for same-lane, bezier for cross-lane
|
|
63
|
-
const isSameLane = !data?.crossesLanes;
|
|
64
|
-
const isSourceSelected = data?.isSourceSelected === true;
|
|
65
|
-
const [edgePath, labelX, labelY] = getBezierPath({
|
|
66
|
-
sourceX,
|
|
67
|
-
sourceY,
|
|
68
|
-
sourcePosition,
|
|
69
|
-
targetX,
|
|
70
|
-
targetY,
|
|
71
|
-
targetPosition,
|
|
72
|
-
curvature: isSameLane ? 0.5 : 0.25,
|
|
73
|
-
});
|
|
74
|
-
return (_jsxs(_Fragment, { children: [_jsx(BaseEdge, { id: id, path: edgePath, style: {
|
|
75
|
-
stroke: theme.colors.primary,
|
|
76
|
-
strokeWidth: 2,
|
|
77
|
-
}, markerEnd: "url(#sequence-arrow)" }), label && (_jsx(EdgeLabelRenderer, { children: _jsx("div", { style: {
|
|
78
|
-
position: 'absolute',
|
|
79
|
-
transform: `translate(-50%, -50%) translate(${labelX}px,${labelY}px)`,
|
|
80
|
-
background: isSourceSelected ? theme.colors.primary : theme.colors.background,
|
|
81
|
-
padding: isSourceSelected ? '4px 10px' : '2px 8px',
|
|
82
|
-
borderRadius: 4,
|
|
83
|
-
fontSize: theme.fontSizes[0],
|
|
84
|
-
fontWeight: isSourceSelected ? theme.fontWeights.bold : theme.fontWeights.medium,
|
|
85
|
-
fontFamily: theme.fonts.body,
|
|
86
|
-
color: isSourceSelected ? theme.colors.background : theme.colors.text,
|
|
87
|
-
border: `${isSourceSelected ? 2 : 1}px solid ${isSourceSelected ? theme.colors.primary : theme.colors.border}`,
|
|
88
|
-
pointerEvents: 'all',
|
|
89
|
-
whiteSpace: 'nowrap',
|
|
90
|
-
cursor: 'pointer',
|
|
91
|
-
transition: 'all 0.2s ease',
|
|
92
|
-
boxShadow: isSourceSelected ? `0 2px 8px ${theme.colors.primary}60` : 'none',
|
|
93
|
-
}, className: "nodrag nopan", children: label }) }))] }));
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Participant-to-participant arrow edge (or activation bar for same-lane)
|
|
97
|
-
* Draws from source participant lifeline to target participant lifeline
|
|
98
|
-
*/
|
|
99
|
-
function SequenceArrowParticipantEdge({ id, sourceY, targetY, label, data, }) {
|
|
100
|
-
const { theme } = useTheme();
|
|
101
|
-
// Use participant X positions from data (swimlane centers)
|
|
102
|
-
const sourceX = (data?.sourceParticipantX ?? 0);
|
|
103
|
-
const targetX = (data?.targetParticipantX ?? 0);
|
|
104
|
-
const safeSourceY = (sourceY ?? 0);
|
|
105
|
-
const safeTargetY = (targetY ?? 0);
|
|
106
|
-
// Check if this is same-lane (activation bar) or cross-lane (arrow)
|
|
107
|
-
const isSameLane = sourceX === targetX;
|
|
108
|
-
const isLastEvent = data?.isLastEvent === true;
|
|
109
|
-
// Style based on whether it's a move event (IPC) or transform event (internal)
|
|
110
|
-
const isMoveEvent = data?.isMoveEvent === true;
|
|
111
|
-
const isSourceSelected = data?.isSourceSelected === true;
|
|
112
|
-
const strokeColor = isMoveEvent ? (theme.colors.accent || '#f48771') : theme.colors.primary;
|
|
113
|
-
// Same lane: render as activation bar
|
|
114
|
-
if (isSameLane) {
|
|
115
|
-
const barWidth = 12;
|
|
116
|
-
const eventSpacing = (data?.eventSpacing ?? 80);
|
|
117
|
-
// For last event, use half the event spacing for bar height
|
|
118
|
-
let barHeight;
|
|
119
|
-
let barY;
|
|
120
|
-
if (isLastEvent) {
|
|
121
|
-
barHeight = eventSpacing / 2;
|
|
122
|
-
barY = safeSourceY; // Start at the event position
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
// Normal case: bar from source to target
|
|
126
|
-
const calculatedHeight = Math.abs(safeTargetY - safeSourceY);
|
|
127
|
-
// Ensure minimum height if events are at same position
|
|
128
|
-
barHeight = calculatedHeight > 0 ? calculatedHeight : eventSpacing / 2;
|
|
129
|
-
barY = Math.min(safeSourceY, safeTargetY);
|
|
130
|
-
}
|
|
131
|
-
const barX = sourceX - barWidth / 2;
|
|
132
|
-
return (_jsxs(_Fragment, { children: [_jsx("svg", { children: _jsx("rect", { x: barX, y: barY, width: barWidth, height: barHeight, fill: strokeColor, stroke: strokeColor, strokeWidth: 2, rx: 2 }) }), label && (_jsx(EdgeLabelRenderer, { children: _jsx("div", { style: {
|
|
133
|
-
position: 'absolute',
|
|
134
|
-
transform: `translate(-100%, -50%) translate(${sourceX - 7}px,${barY + barHeight / 2}px)`,
|
|
135
|
-
background: isSourceSelected ? strokeColor : theme.colors.background,
|
|
136
|
-
padding: '2px 8px',
|
|
137
|
-
borderTopLeftRadius: 4,
|
|
138
|
-
borderTopRightRadius: 0,
|
|
139
|
-
borderBottomLeftRadius: 4,
|
|
140
|
-
borderBottomRightRadius: 0,
|
|
141
|
-
fontSize: theme.fontSizes[0],
|
|
142
|
-
fontWeight: isSourceSelected ? theme.fontWeights.bold : theme.fontWeights.medium,
|
|
143
|
-
fontFamily: theme.fonts.body,
|
|
144
|
-
color: isSourceSelected ? theme.colors.background : strokeColor,
|
|
145
|
-
borderTop: `${isSourceSelected ? 2 : 1}px solid ${strokeColor}`,
|
|
146
|
-
borderLeft: `${isSourceSelected ? 2 : 1}px solid ${strokeColor}`,
|
|
147
|
-
borderBottom: `${isSourceSelected ? 2 : 1}px solid ${strokeColor}`,
|
|
148
|
-
borderRight: `1px solid ${strokeColor}`,
|
|
149
|
-
pointerEvents: 'all',
|
|
150
|
-
whiteSpace: 'nowrap',
|
|
151
|
-
cursor: 'pointer',
|
|
152
|
-
transition: 'all 0.2s ease',
|
|
153
|
-
boxShadow: isSourceSelected ? `0 2px 8px ${strokeColor}60` : 'none',
|
|
154
|
-
}, className: "nodrag nopan", children: label }) }))] }));
|
|
155
|
-
}
|
|
156
|
-
// Cross-lane: render as horizontal arrow at midpoint
|
|
157
|
-
const strokeWidth = isMoveEvent ? 2.5 : 2;
|
|
158
|
-
const markerEnd = isMoveEvent ? 'url(#sequence-arrow-move)' : 'url(#sequence-arrow)';
|
|
159
|
-
// Draw horizontal arrow at the midpoint between source and target Y positions
|
|
160
|
-
const arrowY = (safeSourceY + safeTargetY) / 2;
|
|
161
|
-
// Inset arrow endpoints so they stop just before the lifelines instead of crossing them
|
|
162
|
-
const lifelineInset = 6;
|
|
163
|
-
const direction = targetX > sourceX ? 1 : -1;
|
|
164
|
-
const startX = sourceX + direction * lifelineInset;
|
|
165
|
-
const endX = targetX - direction * lifelineInset;
|
|
166
|
-
const path = `M ${startX} ${arrowY} L ${endX} ${arrowY}`;
|
|
167
|
-
const labelX = (sourceX + targetX) / 2;
|
|
168
|
-
const labelY = arrowY;
|
|
169
|
-
return (_jsxs(_Fragment, { children: [_jsx(BaseEdge, { id: id, path: path, style: {
|
|
170
|
-
stroke: strokeColor,
|
|
171
|
-
strokeWidth: strokeWidth,
|
|
172
|
-
}, markerEnd: markerEnd }), label && (_jsx(EdgeLabelRenderer, { children: _jsx("div", { style: {
|
|
173
|
-
position: 'absolute',
|
|
174
|
-
transform: `translate(-50%, -50%) translate(${labelX}px,${labelY - 12}px)`,
|
|
175
|
-
background: isSourceSelected ? strokeColor : theme.colors.background,
|
|
176
|
-
padding: isMoveEvent ? '3px 10px' : '2px 8px',
|
|
177
|
-
borderTopLeftRadius: 4,
|
|
178
|
-
borderTopRightRadius: 4,
|
|
179
|
-
borderBottomLeftRadius: 0,
|
|
180
|
-
borderBottomRightRadius: 0,
|
|
181
|
-
fontSize: theme.fontSizes[0],
|
|
182
|
-
fontWeight: isSourceSelected ? theme.fontWeights.bold : (isMoveEvent ? theme.fontWeights.bold : theme.fontWeights.medium),
|
|
183
|
-
fontFamily: theme.fonts.body,
|
|
184
|
-
color: isSourceSelected ? theme.colors.background : strokeColor,
|
|
185
|
-
borderTop: `${isSourceSelected ? 3 : (isMoveEvent ? 2 : 1)}px solid ${strokeColor}`,
|
|
186
|
-
borderLeft: `${isSourceSelected ? 3 : (isMoveEvent ? 2 : 1)}px solid ${strokeColor}`,
|
|
187
|
-
borderRight: `${isSourceSelected ? 3 : (isMoveEvent ? 2 : 1)}px solid ${strokeColor}`,
|
|
188
|
-
borderBottom: `${isMoveEvent ? 2 : 1}px solid ${strokeColor}`,
|
|
189
|
-
pointerEvents: 'all',
|
|
190
|
-
whiteSpace: 'nowrap',
|
|
191
|
-
cursor: 'pointer',
|
|
192
|
-
transition: 'all 0.2s ease',
|
|
193
|
-
boxShadow: isSourceSelected ? `0 4px 12px ${strokeColor}60` : 'none',
|
|
194
|
-
}, className: "nodrag nopan", children: label }) }))] }));
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* Default node types including sequence marker
|
|
198
|
-
*/
|
|
199
|
-
const defaultSequenceNodeTypes = {
|
|
200
|
-
sequenceMarker: SequenceMarkerNode,
|
|
201
|
-
};
|
|
202
|
-
/**
|
|
203
|
-
* Shared transition for swimlane chrome — interpolates positions and sizes
|
|
204
|
-
* when lanes shift due to drill toggles.
|
|
205
|
-
*/
|
|
206
|
-
const swimlaneTransition = 'top 350ms ease-out, left 350ms ease-out, width 350ms ease-out, height 350ms ease-out';
|
|
207
|
-
/** Duration of the child slide-up exit animation. The close handler waits
|
|
208
|
-
* this long before applying the data change so the diagram body doesn't
|
|
209
|
-
* shift while the children are still on screen. */
|
|
210
|
-
const SWIMLANE_CLOSE_EXIT_MS = 280;
|
|
211
|
-
const swimlaneAnimationStyles = `
|
|
212
|
-
@keyframes swimlaneFadeIn {
|
|
213
|
-
from { opacity: 0; }
|
|
214
|
-
to { opacity: 1; }
|
|
215
|
-
}
|
|
216
|
-
@keyframes swimlaneFadeOut {
|
|
217
|
-
from { opacity: 1; }
|
|
218
|
-
to { opacity: 0; }
|
|
219
|
-
}
|
|
220
|
-
@keyframes swimlaneChildSlideDown {
|
|
221
|
-
from { transform: translateY(-100%); opacity: 0; }
|
|
222
|
-
to { transform: translateY(0); opacity: 1; }
|
|
223
|
-
}
|
|
224
|
-
@keyframes swimlaneChildSlideUp {
|
|
225
|
-
from { transform: translateY(0); opacity: 1; }
|
|
226
|
-
to { transform: translateY(-100%); opacity: 0; }
|
|
227
|
-
}
|
|
228
|
-
.swimlane-fade-in { animation: swimlaneFadeIn 250ms ease-out both; }
|
|
229
|
-
.swimlane-child-bg-in { animation: swimlaneFadeIn 300ms ease-out 250ms both; }
|
|
230
|
-
.swimlane-child-in { animation: swimlaneChildSlideDown 300ms ease-out 250ms both; }
|
|
231
|
-
.swimlane-child-out { animation: swimlaneChildSlideUp 280ms ease-in both; }
|
|
232
|
-
.swimlane-fade-out { animation: swimlaneFadeOut 250ms ease-in both; }
|
|
233
|
-
`;
|
|
234
|
-
/**
|
|
235
|
-
* Default edge types including sequence arrow and participant arrow
|
|
236
|
-
*/
|
|
237
|
-
const defaultSequenceEdgeTypes = {
|
|
238
|
-
sequenceArrow: SequenceArrowEdge,
|
|
239
|
-
sequenceArrowParticipant: SequenceArrowParticipantEdge,
|
|
240
|
-
};
|
|
241
|
-
/**
|
|
242
|
-
* Swimlane layer that renders behind nodes and transforms with viewport
|
|
243
|
-
*/
|
|
244
|
-
function SwimlaneLayer({ swimlanes, headerRows, laneWidth, headerHeight, totalHeight, transparent = false, }) {
|
|
245
|
-
const totalHeaderHeight = headerHeight * headerRows;
|
|
246
|
-
const { x, y, zoom } = useViewport();
|
|
247
|
-
const viewportHeight = useStore((s) => s.height);
|
|
248
|
-
const { theme } = useTheme();
|
|
249
|
-
// Extend lanes to cover the viewport bottom even when content is short.
|
|
250
|
-
// In flow-coord space, the visible viewport is `viewportHeight / zoom` tall.
|
|
251
|
-
const extendedHeight = Math.max(totalHeight + 20, viewportHeight / zoom + 100);
|
|
252
|
-
return (_jsxs("div", { style: {
|
|
253
|
-
position: 'absolute',
|
|
254
|
-
top: 0,
|
|
255
|
-
left: 0,
|
|
256
|
-
transformOrigin: '0 0',
|
|
257
|
-
transform: `translate(${x}px, ${y}px) scale(${zoom})`,
|
|
258
|
-
pointerEvents: 'none',
|
|
259
|
-
zIndex: -1,
|
|
260
|
-
}, children: [swimlanes.map((lane, index) => {
|
|
261
|
-
const isEven = index % 2 === 0;
|
|
262
|
-
const laneBackground = transparent
|
|
263
|
-
? 'transparent'
|
|
264
|
-
: isEven
|
|
265
|
-
? theme.colors.muted
|
|
266
|
-
: theme.colors.background;
|
|
267
|
-
const fadeClass = lane.isParentOpened
|
|
268
|
-
? 'swimlane-child-bg-in'
|
|
269
|
-
: 'swimlane-fade-in';
|
|
270
|
-
return (_jsx("div", { className: fadeClass, style: {
|
|
271
|
-
position: 'absolute',
|
|
272
|
-
left: lane.x - laneWidth / 2,
|
|
273
|
-
top: 0,
|
|
274
|
-
width: laneWidth,
|
|
275
|
-
height: extendedHeight,
|
|
276
|
-
backgroundColor: laneBackground,
|
|
277
|
-
borderRight: `1px solid ${theme.colors.border}`,
|
|
278
|
-
transition: swimlaneTransition,
|
|
279
|
-
} }, `bg-${lane.namespace}`));
|
|
280
|
-
}), swimlanes.map((lane) => (_jsx("div", { className: lane.isParentOpened ? 'swimlane-child-bg-in' : 'swimlane-fade-in', style: {
|
|
281
|
-
position: 'absolute',
|
|
282
|
-
left: lane.x,
|
|
283
|
-
top: totalHeaderHeight,
|
|
284
|
-
width: 2,
|
|
285
|
-
height: extendedHeight - totalHeaderHeight,
|
|
286
|
-
backgroundColor: 'rgba(255, 255, 255, 0.4)',
|
|
287
|
-
transform: 'translateX(-1px)',
|
|
288
|
-
transition: swimlaneTransition,
|
|
289
|
-
} }, `lifeline-${lane.namespace}`)))] }));
|
|
290
|
-
}
|
|
291
|
-
/**
|
|
292
|
-
* Two offset rounded rectangles signaling that a header has nested lanes
|
|
293
|
-
* underneath it. When `opened`, the front layer is filled to indicate the
|
|
294
|
-
* stack is currently expanded.
|
|
295
|
-
*/
|
|
296
|
-
function StackIcon({ opened = false, hovered = false, accentColor, }) {
|
|
297
|
-
// Closed: rects compactly stacked, both outlined in text color.
|
|
298
|
-
// Hovered: strokes tint to the accent color (preview of the action).
|
|
299
|
-
// Opened: front rect drifts down/right and fades to filled in the accent.
|
|
300
|
-
const rectTransition = 'transform 280ms cubic-bezier(0.2, 0, 0, 1), fill-opacity 280ms ease, stroke 200ms ease';
|
|
301
|
-
const useAccent = (opened || hovered) && !!accentColor;
|
|
302
|
-
const stroke = useAccent ? accentColor : 'currentColor';
|
|
303
|
-
const fill = accentColor || 'currentColor';
|
|
304
|
-
return (_jsxs("svg", { width: 22, height: 22, viewBox: "0 0 14 14", fill: "none", strokeWidth: 1.3, strokeLinejoin: "round", "aria-hidden": "true", style: {
|
|
305
|
-
flexShrink: 0,
|
|
306
|
-
opacity: opened ? 0.95 : hovered ? 0.9 : 0.75,
|
|
307
|
-
overflow: 'visible',
|
|
308
|
-
transition: 'opacity 200ms ease',
|
|
309
|
-
}, children: [_jsx("rect", { x: 2, y: 3, width: 7, height: 5, rx: 1, stroke: stroke, style: {
|
|
310
|
-
transition: rectTransition,
|
|
311
|
-
transform: opened
|
|
312
|
-
? 'translate(-1.5px, -1.5px)'
|
|
313
|
-
: 'translate(0px, 0px)',
|
|
314
|
-
} }), _jsx("rect", { x: 5, y: 6, width: 7, height: 5, rx: 1, stroke: stroke, fill: fill, style: {
|
|
315
|
-
transition: rectTransition,
|
|
316
|
-
transform: opened
|
|
317
|
-
? 'translate(1.5px, 1.5px)'
|
|
318
|
-
: 'translate(0px, 0px)',
|
|
319
|
-
fillOpacity: opened ? 0.35 : 0,
|
|
320
|
-
} })] }));
|
|
321
|
-
}
|
|
322
|
-
/**
|
|
323
|
-
* Swimlane headers layer that renders on top of nodes for clickability
|
|
324
|
-
*/
|
|
325
|
-
function SwimlaneHeadersLayer({ swimlanes, parentHeaders, laneWidth, headerHeight, onToggleNamespace, closingNamespaces, stickyHeaders = true, transparent = false, }) {
|
|
326
|
-
const { x, y, zoom } = useViewport();
|
|
327
|
-
const { theme } = useTheme();
|
|
328
|
-
const [hoveredNamespace, setHoveredNamespace] = useState(null);
|
|
329
|
-
// When sticky headers are enabled, drop vertical translation from the wrapper
|
|
330
|
-
// so headers stay locked to the top regardless of vertical pan. The inner
|
|
331
|
-
// cells then keep their natural `top` values (no per-scroll recompute), which
|
|
332
|
-
// avoids fighting the CSS transition on `top` used for drill-toggle animations.
|
|
333
|
-
const wrapperY = stickyHeaders ? 0 : y;
|
|
334
|
-
const headers = useMemo(() => [
|
|
335
|
-
...parentHeaders.map((h) => ({
|
|
336
|
-
namespace: h.namespace,
|
|
337
|
-
label: h.label,
|
|
338
|
-
x: h.x,
|
|
339
|
-
width: h.width,
|
|
340
|
-
depth: h.depth,
|
|
341
|
-
isOpened: true,
|
|
342
|
-
isParentOpened: h.depth > 1,
|
|
343
|
-
canExpand: false,
|
|
344
|
-
})),
|
|
345
|
-
...swimlanes.map((lane) => ({
|
|
346
|
-
namespace: lane.namespace,
|
|
347
|
-
label: lane.label,
|
|
348
|
-
x: lane.x,
|
|
349
|
-
width: laneWidth,
|
|
350
|
-
depth: lane.namespace.split('.').length,
|
|
351
|
-
isOpened: false,
|
|
352
|
-
isParentOpened: lane.isParentOpened,
|
|
353
|
-
canExpand: lane.canExpand,
|
|
354
|
-
})),
|
|
355
|
-
], [parentHeaders, swimlanes, laneWidth]);
|
|
356
|
-
return (_jsx("div", { style: {
|
|
357
|
-
position: 'absolute',
|
|
358
|
-
top: 0,
|
|
359
|
-
left: 0,
|
|
360
|
-
transformOrigin: '0 0',
|
|
361
|
-
transform: `translate(${x}px, ${wrapperY}px) scale(${zoom})`,
|
|
362
|
-
pointerEvents: 'none',
|
|
363
|
-
zIndex: 10,
|
|
364
|
-
}, children: headers.map((header) => {
|
|
365
|
-
const rowTop = (header.depth - 1) * headerHeight;
|
|
366
|
-
// Child leaves (under an opened parent) get the differentiated, lighter
|
|
367
|
-
// styling. Top-level leaves AND opened parents share the original
|
|
368
|
-
// header look — so the cell you clicked doesn't change appearance, it
|
|
369
|
-
// just grows to span its children.
|
|
370
|
-
const isChild = header.isParentOpened && !header.isOpened;
|
|
371
|
-
const showOpen = header.canExpand && !header.isOpened;
|
|
372
|
-
const isClickable = header.isOpened || showOpen;
|
|
373
|
-
// If this child's parent is mid-close, play the exit animation
|
|
374
|
-
// instead of the entry. After SWIMLANE_CLOSE_EXIT_MS the data
|
|
375
|
-
// change applies and the child unmounts.
|
|
376
|
-
const parentNs = header.depth > 1
|
|
377
|
-
? header.namespace.split('.').slice(0, -1).join('.')
|
|
378
|
-
: undefined;
|
|
379
|
-
const isExiting = isChild && !!parentNs && !!closingNamespaces?.has(parentNs);
|
|
380
|
-
const cellClassName = isExiting
|
|
381
|
-
? 'swimlane-child-out'
|
|
382
|
-
: isChild
|
|
383
|
-
? 'swimlane-child-in'
|
|
384
|
-
: 'swimlane-fade-in';
|
|
385
|
-
return (_jsxs("div", { className: cellClassName, role: isClickable ? 'button' : undefined, "aria-label": header.isOpened
|
|
386
|
-
? `Close ${header.namespace}`
|
|
387
|
-
: showOpen
|
|
388
|
-
? `Open ${header.namespace}`
|
|
389
|
-
: undefined, title: header.namespace, style: {
|
|
390
|
-
position: 'absolute',
|
|
391
|
-
left: header.x - header.width / 2,
|
|
392
|
-
top: rowTop,
|
|
393
|
-
width: header.width,
|
|
394
|
-
height: headerHeight,
|
|
395
|
-
display: 'flex',
|
|
396
|
-
alignItems: 'center',
|
|
397
|
-
justifyContent: 'center',
|
|
398
|
-
padding: '0 8px',
|
|
399
|
-
boxSizing: 'border-box',
|
|
400
|
-
backgroundColor: transparent
|
|
401
|
-
? 'transparent'
|
|
402
|
-
: isChild
|
|
403
|
-
? theme.colors.background
|
|
404
|
-
: theme.colors.muted,
|
|
405
|
-
transition: swimlaneTransition,
|
|
406
|
-
borderBottom: isChild
|
|
407
|
-
? `1px solid ${theme.colors.border}`
|
|
408
|
-
: `2px solid ${theme.colors.border}`,
|
|
409
|
-
borderLeft: isChild
|
|
410
|
-
? `1px solid ${theme.colors.border}`
|
|
411
|
-
: 'none',
|
|
412
|
-
borderRight: isChild
|
|
413
|
-
? `1px solid ${theme.colors.border}`
|
|
414
|
-
: 'none',
|
|
415
|
-
fontWeight: isChild
|
|
416
|
-
? theme.fontWeights.medium
|
|
417
|
-
: theme.fontWeights.semibold,
|
|
418
|
-
fontSize: isChild ? theme.fontSizes[1] : theme.fontSizes[2],
|
|
419
|
-
fontFamily: theme.fonts.heading,
|
|
420
|
-
color: isChild ? theme.colors.textSecondary : theme.colors.text,
|
|
421
|
-
pointerEvents: 'auto',
|
|
422
|
-
userSelect: 'none',
|
|
423
|
-
cursor: isClickable ? 'pointer' : 'default',
|
|
424
|
-
gap: 6,
|
|
425
|
-
// Parent (opened) cells sit above leaves so children slide out
|
|
426
|
-
// from behind them rather than over the top.
|
|
427
|
-
zIndex: header.isOpened ? 2 : 1,
|
|
428
|
-
}, onClick: isClickable
|
|
429
|
-
? (e) => {
|
|
430
|
-
e.stopPropagation();
|
|
431
|
-
onToggleNamespace?.(header.namespace);
|
|
432
|
-
}
|
|
433
|
-
: undefined, onMouseEnter: isClickable
|
|
434
|
-
? () => setHoveredNamespace(header.namespace)
|
|
435
|
-
: undefined, onMouseLeave: isClickable
|
|
436
|
-
? () => setHoveredNamespace((current) => current === header.namespace ? null : current)
|
|
437
|
-
: undefined, children: [_jsx("span", { style: {
|
|
438
|
-
overflowWrap: 'anywhere',
|
|
439
|
-
wordBreak: 'break-word',
|
|
440
|
-
lineHeight: 1.2,
|
|
441
|
-
textAlign: 'center',
|
|
442
|
-
flex: 1,
|
|
443
|
-
}, children: header.label }), (header.isOpened || showOpen) && (_jsx(StackIcon, { opened: header.isOpened, hovered: hoveredNamespace === header.namespace, accentColor: theme.colors.primary }))] }, header.namespace));
|
|
444
|
-
}) }));
|
|
445
|
-
}
|
|
446
|
-
/**
|
|
447
|
-
* Inner component that uses React Flow hooks
|
|
448
|
-
*/
|
|
449
|
-
function SequenceDiagramInner({ events, edges: sequenceEdges, layoutOptions = {}, nodeTypes: customNodeTypes, edgeTypes: customEdgeTypes, onToggleNamespace, onNodeClick, showControls = true, showBackground = false, // Default to false since swimlanes provide visual structure
|
|
450
|
-
stickyHeaders = true, selectedNodeId, showEventLabels = false, // Default to false - labels already shown on edges
|
|
451
|
-
transparent = false, }) {
|
|
452
|
-
const { theme } = useTheme();
|
|
453
|
-
// Extract layout params
|
|
454
|
-
const { laneWidth = 250, headerHeight = 60 } = layoutOptions;
|
|
455
|
-
// openedNamespaces is controlled if provided in layoutOptions, otherwise
|
|
456
|
-
// we manage it internally so chevrons work out of the box.
|
|
457
|
-
const isOpenedControlled = layoutOptions.openedNamespaces !== undefined;
|
|
458
|
-
const [internalOpened, setInternalOpened] = useState([]);
|
|
459
|
-
const effectiveOpened = isOpenedControlled
|
|
460
|
-
? layoutOptions.openedNamespaces
|
|
461
|
-
: internalOpened;
|
|
462
|
-
// Namespaces currently mid-close. While one is here, the children still
|
|
463
|
-
// render in the data (lifelines, events, edges unchanged) but their header
|
|
464
|
-
// cells flip to the exit animation. After the exit completes we apply the
|
|
465
|
-
// real data change, so the diagram body shifts in sync with the parent
|
|
466
|
-
// header shrink instead of ahead of it.
|
|
467
|
-
const [closingNamespaces, setClosingNamespaces] = useState(() => new Set());
|
|
468
|
-
const handleToggleNamespace = useCallback((namespace) => {
|
|
469
|
-
const openedSet = effectiveOpened instanceof Set
|
|
470
|
-
? effectiveOpened
|
|
471
|
-
: new Set(effectiveOpened ?? []);
|
|
472
|
-
const isCurrentlyOpened = openedSet.has(namespace);
|
|
473
|
-
if (isCurrentlyOpened) {
|
|
474
|
-
// Stage the close: animate children out first, then apply data change.
|
|
475
|
-
setClosingNamespaces((prev) => {
|
|
476
|
-
if (prev.has(namespace))
|
|
477
|
-
return prev;
|
|
478
|
-
const next = new Set(prev);
|
|
479
|
-
next.add(namespace);
|
|
480
|
-
return next;
|
|
481
|
-
});
|
|
482
|
-
setTimeout(() => {
|
|
483
|
-
if (!isOpenedControlled) {
|
|
484
|
-
setInternalOpened((prev) => prev.filter((n) => n !== namespace));
|
|
485
|
-
}
|
|
486
|
-
onToggleNamespace?.(namespace);
|
|
487
|
-
setClosingNamespaces((prev) => {
|
|
488
|
-
if (!prev.has(namespace))
|
|
489
|
-
return prev;
|
|
490
|
-
const next = new Set(prev);
|
|
491
|
-
next.delete(namespace);
|
|
492
|
-
return next;
|
|
493
|
-
});
|
|
494
|
-
}, SWIMLANE_CLOSE_EXIT_MS);
|
|
495
|
-
}
|
|
496
|
-
else {
|
|
497
|
-
// Open: data change is immediate; children animate in via CSS.
|
|
498
|
-
if (!isOpenedControlled) {
|
|
499
|
-
setInternalOpened((prev) => [...prev, namespace]);
|
|
500
|
-
}
|
|
501
|
-
onToggleNamespace?.(namespace);
|
|
502
|
-
}
|
|
503
|
-
}, [effectiveOpened, isOpenedControlled, onToggleNamespace]);
|
|
504
|
-
const effectiveLayoutOptions = useMemo(() => ({ ...layoutOptions, openedNamespaces: effectiveOpened }), [layoutOptions, effectiveOpened]);
|
|
505
|
-
// Merge custom node/edge types with sequence defaults
|
|
506
|
-
const nodeTypes = useMemo(() => ({ ...defaultSequenceNodeTypes, ...customNodeTypes }), [customNodeTypes]);
|
|
507
|
-
const edgeTypes = useMemo(() => ({ ...defaultSequenceEdgeTypes, ...customEdgeTypes }), [customEdgeTypes]);
|
|
508
|
-
// Compute layout
|
|
509
|
-
const { nodes: layoutNodes, edges, swimlanes, parentHeaders, headerRows, totalWidth, totalHeight, } = useSequenceLayout(events, sequenceEdges, effectiveLayoutOptions);
|
|
510
|
-
// Mark selected node and add showEventLabels to node data
|
|
511
|
-
const nodes = useMemo(() => {
|
|
512
|
-
return layoutNodes.map(node => ({
|
|
513
|
-
...node,
|
|
514
|
-
selected: node.id === selectedNodeId,
|
|
515
|
-
data: {
|
|
516
|
-
...node.data,
|
|
517
|
-
showEventLabels,
|
|
518
|
-
},
|
|
519
|
-
}));
|
|
520
|
-
}, [layoutNodes, selectedNodeId, showEventLabels]);
|
|
521
|
-
// Add selectedNodeId to edge data so edges can highlight their labels
|
|
522
|
-
const edgesWithSelection = useMemo(() => {
|
|
523
|
-
return edges.map(edge => ({
|
|
524
|
-
...edge,
|
|
525
|
-
data: {
|
|
526
|
-
...edge.data,
|
|
527
|
-
isSourceSelected: edge.source === selectedNodeId,
|
|
528
|
-
},
|
|
529
|
-
}));
|
|
530
|
-
}, [edges, selectedNodeId]);
|
|
531
|
-
// Handle node click
|
|
532
|
-
const handleNodeClick = useCallback((_event, node) => {
|
|
533
|
-
onNodeClick?.(node.id, _event);
|
|
534
|
-
}, [onNodeClick]);
|
|
535
|
-
// Handle edge click - extract source event from edge and trigger node selection
|
|
536
|
-
const handleEdgeClick = useCallback((_event, edge) => {
|
|
537
|
-
// When clicking an edge, select the source event (the label describes the source)
|
|
538
|
-
// The edge label comes from the source event, so clicking it should select that event
|
|
539
|
-
onNodeClick?.(edge.source, _event);
|
|
540
|
-
}, [onNodeClick]);
|
|
541
|
-
// Clamp horizontal and vertical panning to content bounds so swimlanes and
|
|
542
|
-
// headers stay in view. When sticky headers are disabled, allow a small
|
|
543
|
-
// negative top buffer for visual breathing room.
|
|
544
|
-
const translateExtent = useMemo(() => {
|
|
545
|
-
const xMin = 0;
|
|
546
|
-
const xMax = totalWidth;
|
|
547
|
-
const yMin = stickyHeaders ? 0 : -20;
|
|
548
|
-
const yMax = stickyHeaders ? totalHeight + 1000 : totalHeight + 20;
|
|
549
|
-
return [
|
|
550
|
-
[xMin, yMin],
|
|
551
|
-
[xMax, yMax],
|
|
552
|
-
];
|
|
553
|
-
}, [stickyHeaders, totalWidth, totalHeight]);
|
|
554
|
-
// When sticky headers are enabled, use defaultViewport to ensure we start at y=0
|
|
555
|
-
// This prevents the snap-to-position issue on initial load
|
|
556
|
-
const viewportConfig = useMemo(() => {
|
|
557
|
-
if (stickyHeaders) {
|
|
558
|
-
// Start with top-aligned view (y=0) and reasonable zoom
|
|
559
|
-
return {
|
|
560
|
-
fitView: false,
|
|
561
|
-
defaultViewport: { x: 0, y: 0, zoom: 0.8 },
|
|
562
|
-
};
|
|
563
|
-
}
|
|
564
|
-
// Use fitView for non-sticky mode
|
|
565
|
-
return {
|
|
566
|
-
fitView: true,
|
|
567
|
-
fitViewOptions: {
|
|
568
|
-
padding: 0.1,
|
|
569
|
-
minZoom: 0.5,
|
|
570
|
-
maxZoom: 1.5,
|
|
571
|
-
},
|
|
572
|
-
};
|
|
573
|
-
}, [stickyHeaders]);
|
|
574
|
-
return (_jsxs(ReactFlow, { nodes: nodes, edges: edgesWithSelection, nodeTypes: nodeTypes, edgeTypes: edgeTypes, onNodeClick: handleNodeClick, onEdgeClick: handleEdgeClick, ...viewportConfig, minZoom: 0.1, maxZoom: 2, nodesDraggable: false, nodesConnectable: false, elementsSelectable: true, panOnScroll: true, zoomOnScroll: true, translateExtent: translateExtent, style: { background: transparent ? 'transparent' : theme.colors.background }, children: [_jsx("style", { children: swimlaneAnimationStyles }), _jsx("svg", { style: { position: 'absolute', width: 0, height: 0 }, children: _jsxs("defs", { children: [_jsx("marker", { id: "sequence-arrow", viewBox: "0 0 10 10", refX: "8", refY: "5", markerWidth: "6", markerHeight: "6", orient: "auto-start-reverse", children: _jsx("path", { d: "M 0 0 L 10 5 L 0 10 z", fill: theme.colors.primary }) }), _jsx("marker", { id: "sequence-arrow-move", viewBox: "0 0 10 10", refX: "8", refY: "5", markerWidth: "7", markerHeight: "7", orient: "auto-start-reverse", children: _jsx("path", { d: "M 0 0 L 10 5 L 0 10 z", fill: theme.colors.accent || '#f48771' }) })] }) }), showBackground && (_jsx(Background, { variant: BackgroundVariant.Dots, gap: 16, size: 1 })), showControls && _jsx(Controls, {}), _jsx(SwimlaneLayer, { swimlanes: swimlanes, parentHeaders: parentHeaders, headerRows: headerRows, laneWidth: laneWidth, headerHeight: headerHeight, totalHeight: totalHeight, transparent: transparent }), _jsx(SwimlaneHeadersLayer, { swimlanes: swimlanes, parentHeaders: parentHeaders, headerRows: headerRows, laneWidth: laneWidth, headerHeight: headerHeight, totalHeight: totalHeight, onToggleNamespace: handleToggleNamespace, closingNamespaces: closingNamespaces, stickyHeaders: stickyHeaders, transparent: transparent })] }));
|
|
575
|
-
}
|
|
576
|
-
/**
|
|
577
|
-
* Sequence Diagram Renderer
|
|
578
|
-
*
|
|
579
|
-
* Renders events as a sequence diagram with swimlanes based on namespaces.
|
|
580
|
-
*
|
|
581
|
-
* @example
|
|
582
|
-
* ```tsx
|
|
583
|
-
* <SequenceDiagramRenderer
|
|
584
|
-
* events={[
|
|
585
|
-
* { id: '1', name: 'auth.validation.started' },
|
|
586
|
-
* { id: '2', name: 'auth.validation.completed' },
|
|
587
|
-
* { id: '3', name: 'database.query.executed' },
|
|
588
|
-
* ]}
|
|
589
|
-
* edges={[
|
|
590
|
-
* { id: 'e1', fromEvent: '1', toEvent: '2' },
|
|
591
|
-
* { id: 'e2', fromEvent: '2', toEvent: '3' },
|
|
592
|
-
* ]}
|
|
593
|
-
* />
|
|
594
|
-
* ```
|
|
595
|
-
*/
|
|
596
|
-
export function SequenceDiagramRenderer(props) {
|
|
597
|
-
const { className, width = '100%', height = 600 } = props;
|
|
598
|
-
return (_jsx("div", { className: className, style: {
|
|
599
|
-
width,
|
|
600
|
-
height,
|
|
601
|
-
position: 'relative',
|
|
602
|
-
}, children: _jsx(ReactFlowProvider, { children: _jsx(SequenceDiagramInner, { ...props }) }) }));
|
|
603
|
-
}
|
|
604
|
-
//# sourceMappingURL=SequenceDiagramRenderer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SequenceDiagramRenderer.js","sourceRoot":"","sources":["../../src/components/SequenceDiagramRenderer.tsx"],"names":[],"mappings":"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"}
|