@principal-ai/subsystems-react 0.20.6 → 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.
Files changed (270) hide show
  1. package/README.md +1 -1
  2. package/dist/graphify/anchor.d.ts +17 -0
  3. package/dist/graphify/anchor.d.ts.map +1 -1
  4. package/dist/graphify/anchor.js +41 -0
  5. package/dist/graphify/anchor.js.map +1 -1
  6. package/dist/graphify/consolidated.d.ts +40 -1
  7. package/dist/graphify/consolidated.d.ts.map +1 -1
  8. package/dist/index.d.ts +5 -5
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +2 -2
  11. package/dist/index.js.map +1 -1
  12. package/dist/pierre/{PierreThroughlineCodeView.d.ts → PierreWalkthroughCodeView.d.ts} +7 -7
  13. package/dist/pierre/{PierreThroughlineCodeView.d.ts.map → PierreWalkthroughCodeView.d.ts.map} +1 -1
  14. package/dist/pierre/{PierreThroughlineCodeView.js → PierreWalkthroughCodeView.js} +28 -36
  15. package/dist/pierre/PierreWalkthroughCodeView.js.map +1 -0
  16. package/dist/pierre/index.d.ts +2 -2
  17. package/dist/pierre/index.js +1 -1
  18. package/dist/pierre/pierreFileLang.d.ts +1 -1
  19. package/dist/pierre/pierreFileLang.js +1 -1
  20. package/dist/stories/Subsystem/ComponentGraph/fixtures.d.ts +14 -2
  21. package/dist/stories/Subsystem/ComponentGraph/fixtures.d.ts.map +1 -1
  22. package/dist/stories/Subsystem/ComponentGraph/fixtures.js +86 -20
  23. package/dist/stories/Subsystem/ComponentGraph/fixtures.js.map +1 -1
  24. package/dist/subsystem/FileDrawer.d.ts +2 -2
  25. package/dist/subsystem/FileDrawer.js +2 -2
  26. package/dist/subsystem/SubsystemComponentGraph.d.ts +25 -24
  27. package/dist/subsystem/SubsystemComponentGraph.d.ts.map +1 -1
  28. package/dist/subsystem/SubsystemComponentGraph.js +204 -199
  29. package/dist/subsystem/SubsystemComponentGraph.js.map +1 -1
  30. package/dist/subsystem/formatDeclaration.d.ts +2 -1
  31. package/dist/subsystem/formatDeclaration.d.ts.map +1 -1
  32. package/dist/subsystem/formatDeclaration.js +57 -33
  33. package/dist/subsystem/formatDeclaration.js.map +1 -1
  34. package/dist/subsystem/model.d.ts +85 -35
  35. package/dist/subsystem/model.d.ts.map +1 -1
  36. package/dist/subsystem/model.js +85 -6
  37. package/dist/subsystem/model.js.map +1 -1
  38. package/dist/subsystem/nodes.d.ts.map +1 -1
  39. package/dist/subsystem/nodes.js +30 -13
  40. package/dist/subsystem/nodes.js.map +1 -1
  41. package/dist/subsystem/tokenizeComponent.js +2 -2
  42. package/dist/subsystem/tokenizeComponent.js.map +1 -1
  43. package/package.json +3 -3
  44. package/src/graphify/anchor.test.ts +31 -2
  45. package/src/graphify/anchor.ts +46 -0
  46. package/src/graphify/consolidated.ts +43 -1
  47. package/src/index.ts +13 -5
  48. package/src/pierre/{PierreThroughlineCodeView.tsx → PierreWalkthroughCodeView.tsx} +39 -47
  49. package/src/pierre/index.ts +2 -2
  50. package/src/pierre/pierreFileLang.ts +1 -1
  51. package/src/stories/Pierre/CodeView.stories.tsx +3 -3
  52. package/src/stories/Subsystem/ComponentDeclarationAudit.stories.tsx +14 -14
  53. package/src/stories/Subsystem/ComponentGraph/Appearance.stories.tsx +13 -15
  54. package/src/stories/Subsystem/ComponentGraph/Basics.stories.tsx +8 -8
  55. package/src/stories/Subsystem/ComponentGraph/Captures.stories.tsx +14 -14
  56. package/src/stories/Subsystem/ComponentGraph/CustomEntities.stories.tsx +11 -10
  57. package/src/stories/Subsystem/ComponentGraph/DetailPanel.stories.tsx +13 -14
  58. package/src/stories/Subsystem/ComponentGraph/Flows.stories.tsx +31 -66
  59. package/src/stories/Subsystem/ComponentGraph/FrameworkStereotype.stories.tsx +2 -2
  60. package/src/stories/Subsystem/ComponentGraph/GraphTitle.stories.tsx +4 -4
  61. package/src/stories/Subsystem/ComponentGraph/Processes.stories.tsx +3 -3
  62. package/src/stories/Subsystem/ComponentGraph/Proposed.stories.tsx +1 -1
  63. package/src/stories/Subsystem/ComponentGraph/Scenarios.stories.tsx +518 -33
  64. package/src/stories/Subsystem/ComponentGraph/Spotlights.stories.tsx +13 -13
  65. package/src/stories/Subsystem/ComponentGraph/fixtures.ts +105 -21
  66. package/src/subsystem/FileDrawer.tsx +2 -2
  67. package/src/subsystem/SubsystemComponentGraph.tsx +268 -259
  68. package/src/subsystem/formatDeclaration.test.ts +76 -1
  69. package/src/subsystem/formatDeclaration.ts +57 -33
  70. package/src/subsystem/model.test.ts +27 -15
  71. package/src/subsystem/model.ts +175 -45
  72. package/src/subsystem/nodes.tsx +47 -13
  73. package/src/subsystem/tokenizeComponent.ts +2 -2
  74. package/dist/components/ConfigurationSelector.d.ts +0 -35
  75. package/dist/components/ConfigurationSelector.d.ts.map +0 -1
  76. package/dist/components/ConfigurationSelector.js +0 -63
  77. package/dist/components/ConfigurationSelector.js.map +0 -1
  78. package/dist/components/GraphRenderer.d.ts +0 -295
  79. package/dist/components/GraphRenderer.d.ts.map +0 -1
  80. package/dist/components/GraphRenderer.js +0 -2008
  81. package/dist/components/GraphRenderer.js.map +0 -1
  82. package/dist/components/MultiCanvasRenderer.d.ts +0 -75
  83. package/dist/components/MultiCanvasRenderer.d.ts.map +0 -1
  84. package/dist/components/MultiCanvasRenderer.js +0 -203
  85. package/dist/components/MultiCanvasRenderer.js.map +0 -1
  86. package/dist/components/NodeTooltip.d.ts +0 -24
  87. package/dist/components/NodeTooltip.d.ts.map +0 -1
  88. package/dist/components/NodeTooltip.js +0 -160
  89. package/dist/components/NodeTooltip.js.map +0 -1
  90. package/dist/components/SelectionSidebar.d.ts +0 -18
  91. package/dist/components/SelectionSidebar.d.ts.map +0 -1
  92. package/dist/components/SelectionSidebar.js +0 -190
  93. package/dist/components/SelectionSidebar.js.map +0 -1
  94. package/dist/components/SequenceDiagramRenderer.d.ts +0 -77
  95. package/dist/components/SequenceDiagramRenderer.d.ts.map +0 -1
  96. package/dist/components/SequenceDiagramRenderer.js +0 -604
  97. package/dist/components/SequenceDiagramRenderer.js.map +0 -1
  98. package/dist/components/WorkflowSequenceDiagram.d.ts +0 -63
  99. package/dist/components/WorkflowSequenceDiagram.d.ts.map +0 -1
  100. package/dist/components/WorkflowSequenceDiagram.js +0 -147
  101. package/dist/components/WorkflowSequenceDiagram.js.map +0 -1
  102. package/dist/components/dashboard/DashboardRenderer.d.ts +0 -10
  103. package/dist/components/dashboard/DashboardRenderer.d.ts.map +0 -1
  104. package/dist/components/dashboard/DashboardRenderer.js +0 -179
  105. package/dist/components/dashboard/DashboardRenderer.js.map +0 -1
  106. package/dist/components/dashboard/MetricPanel.d.ts +0 -10
  107. package/dist/components/dashboard/MetricPanel.d.ts.map +0 -1
  108. package/dist/components/dashboard/MetricPanel.js +0 -103
  109. package/dist/components/dashboard/MetricPanel.js.map +0 -1
  110. package/dist/components/dashboard/MockDataProvider.d.ts +0 -30
  111. package/dist/components/dashboard/MockDataProvider.d.ts.map +0 -1
  112. package/dist/components/dashboard/MockDataProvider.js +0 -270
  113. package/dist/components/dashboard/MockDataProvider.js.map +0 -1
  114. package/dist/components/dashboard/components/BarChart.d.ts +0 -10
  115. package/dist/components/dashboard/components/BarChart.d.ts.map +0 -1
  116. package/dist/components/dashboard/components/BarChart.js +0 -167
  117. package/dist/components/dashboard/components/BarChart.js.map +0 -1
  118. package/dist/components/dashboard/components/LineChart.d.ts +0 -10
  119. package/dist/components/dashboard/components/LineChart.d.ts.map +0 -1
  120. package/dist/components/dashboard/components/LineChart.js +0 -141
  121. package/dist/components/dashboard/components/LineChart.js.map +0 -1
  122. package/dist/components/dashboard/components/MetricCard.d.ts +0 -9
  123. package/dist/components/dashboard/components/MetricCard.d.ts.map +0 -1
  124. package/dist/components/dashboard/components/MetricCard.js +0 -163
  125. package/dist/components/dashboard/components/MetricCard.js.map +0 -1
  126. package/dist/components/dashboard/components/SourceLink.d.ts +0 -9
  127. package/dist/components/dashboard/components/SourceLink.d.ts.map +0 -1
  128. package/dist/components/dashboard/components/SourceLink.js +0 -39
  129. package/dist/components/dashboard/components/SourceLink.js.map +0 -1
  130. package/dist/components/dashboard/components/TimeRangeSelector.d.ts +0 -9
  131. package/dist/components/dashboard/components/TimeRangeSelector.d.ts.map +0 -1
  132. package/dist/components/dashboard/components/TimeRangeSelector.js +0 -167
  133. package/dist/components/dashboard/components/TimeRangeSelector.js.map +0 -1
  134. package/dist/components/dashboard/components/index.d.ts +0 -6
  135. package/dist/components/dashboard/components/index.d.ts.map +0 -1
  136. package/dist/components/dashboard/components/index.js +0 -6
  137. package/dist/components/dashboard/components/index.js.map +0 -1
  138. package/dist/components/dashboard/index.d.ts +0 -6
  139. package/dist/components/dashboard/index.d.ts.map +0 -1
  140. package/dist/components/dashboard/index.js +0 -8
  141. package/dist/components/dashboard/index.js.map +0 -1
  142. package/dist/components/dashboard/types.d.ts +0 -74
  143. package/dist/components/dashboard/types.d.ts.map +0 -1
  144. package/dist/components/dashboard/types.js +0 -8
  145. package/dist/components/dashboard/types.js.map +0 -1
  146. package/dist/components/state-view/PipelineView.d.ts +0 -14
  147. package/dist/components/state-view/PipelineView.d.ts.map +0 -1
  148. package/dist/components/state-view/PipelineView.js +0 -195
  149. package/dist/components/state-view/PipelineView.js.map +0 -1
  150. package/dist/components/state-view/index.d.ts +0 -14
  151. package/dist/components/state-view/index.d.ts.map +0 -1
  152. package/dist/components/state-view/index.js +0 -12
  153. package/dist/components/state-view/index.js.map +0 -1
  154. package/dist/components/state-view/types.d.ts +0 -188
  155. package/dist/components/state-view/types.d.ts.map +0 -1
  156. package/dist/components/state-view/types.js +0 -10
  157. package/dist/components/state-view/types.js.map +0 -1
  158. package/dist/components/state-view/useStateView.d.ts +0 -32
  159. package/dist/components/state-view/useStateView.d.ts.map +0 -1
  160. package/dist/components/state-view/useStateView.js +0 -129
  161. package/dist/components/state-view/useStateView.js.map +0 -1
  162. package/dist/contexts/GraphEditContext.d.ts +0 -20
  163. package/dist/contexts/GraphEditContext.d.ts.map +0 -1
  164. package/dist/contexts/GraphEditContext.js +0 -8
  165. package/dist/contexts/GraphEditContext.js.map +0 -1
  166. package/dist/contexts/TooltipPortalContext.d.ts +0 -8
  167. package/dist/contexts/TooltipPortalContext.d.ts.map +0 -1
  168. package/dist/contexts/TooltipPortalContext.js +0 -8
  169. package/dist/contexts/TooltipPortalContext.js.map +0 -1
  170. package/dist/edges/CustomEdge.d.ts +0 -24
  171. package/dist/edges/CustomEdge.d.ts.map +0 -1
  172. package/dist/edges/CustomEdge.js +0 -222
  173. package/dist/edges/CustomEdge.js.map +0 -1
  174. package/dist/edges/GenericEdge.d.ts +0 -18
  175. package/dist/edges/GenericEdge.d.ts.map +0 -1
  176. package/dist/edges/GenericEdge.js +0 -10
  177. package/dist/edges/GenericEdge.js.map +0 -1
  178. package/dist/graphify/kind.d.ts +0 -23
  179. package/dist/graphify/kind.d.ts.map +0 -1
  180. package/dist/graphify/kind.js +0 -77
  181. package/dist/graphify/kind.js.map +0 -1
  182. package/dist/hooks/usePathBasedEvents.d.ts +0 -42
  183. package/dist/hooks/usePathBasedEvents.d.ts.map +0 -1
  184. package/dist/hooks/usePathBasedEvents.js +0 -119
  185. package/dist/hooks/usePathBasedEvents.js.map +0 -1
  186. package/dist/hooks/useSequenceLayout.d.ts +0 -186
  187. package/dist/hooks/useSequenceLayout.d.ts.map +0 -1
  188. package/dist/hooks/useSequenceLayout.js +0 -327
  189. package/dist/hooks/useSequenceLayout.js.map +0 -1
  190. package/dist/hooks/useUndoRedo.d.ts +0 -80
  191. package/dist/hooks/useUndoRedo.d.ts.map +0 -1
  192. package/dist/hooks/useUndoRedo.js +0 -70
  193. package/dist/hooks/useUndoRedo.js.map +0 -1
  194. package/dist/nodes/CustomNode.d.ts +0 -28
  195. package/dist/nodes/CustomNode.d.ts.map +0 -1
  196. package/dist/nodes/CustomNode.js +0 -820
  197. package/dist/nodes/CustomNode.js.map +0 -1
  198. package/dist/nodes/GenericNode.d.ts +0 -20
  199. package/dist/nodes/GenericNode.d.ts.map +0 -1
  200. package/dist/nodes/GenericNode.js +0 -20
  201. package/dist/nodes/GenericNode.js.map +0 -1
  202. package/dist/nodes/otel/OtelBoundaryNode.d.ts +0 -55
  203. package/dist/nodes/otel/OtelBoundaryNode.d.ts.map +0 -1
  204. package/dist/nodes/otel/OtelBoundaryNode.js +0 -81
  205. package/dist/nodes/otel/OtelBoundaryNode.js.map +0 -1
  206. package/dist/nodes/otel/OtelEventNode.d.ts +0 -59
  207. package/dist/nodes/otel/OtelEventNode.d.ts.map +0 -1
  208. package/dist/nodes/otel/OtelEventNode.js +0 -82
  209. package/dist/nodes/otel/OtelEventNode.js.map +0 -1
  210. package/dist/nodes/otel/OtelResourceNode.d.ts +0 -53
  211. package/dist/nodes/otel/OtelResourceNode.d.ts.map +0 -1
  212. package/dist/nodes/otel/OtelResourceNode.js +0 -105
  213. package/dist/nodes/otel/OtelResourceNode.js.map +0 -1
  214. package/dist/nodes/otel/OtelScopeNode.d.ts +0 -53
  215. package/dist/nodes/otel/OtelScopeNode.d.ts.map +0 -1
  216. package/dist/nodes/otel/OtelScopeNode.js +0 -81
  217. package/dist/nodes/otel/OtelScopeNode.js.map +0 -1
  218. package/dist/nodes/otel/OtelSpanConventionNode.d.ts +0 -61
  219. package/dist/nodes/otel/OtelSpanConventionNode.d.ts.map +0 -1
  220. package/dist/nodes/otel/OtelSpanConventionNode.js +0 -131
  221. package/dist/nodes/otel/OtelSpanConventionNode.js.map +0 -1
  222. package/dist/nodes/otel/index.d.ts +0 -17
  223. package/dist/nodes/otel/index.d.ts.map +0 -1
  224. package/dist/nodes/otel/index.js +0 -13
  225. package/dist/nodes/otel/index.js.map +0 -1
  226. package/dist/nodes/otel/shared/NodeBadges.d.ts +0 -10
  227. package/dist/nodes/otel/shared/NodeBadges.d.ts.map +0 -1
  228. package/dist/nodes/otel/shared/NodeBadges.js +0 -178
  229. package/dist/nodes/otel/shared/NodeBadges.js.map +0 -1
  230. package/dist/nodes/otel/shared/NodeContent.d.ts +0 -10
  231. package/dist/nodes/otel/shared/NodeContent.d.ts.map +0 -1
  232. package/dist/nodes/otel/shared/NodeContent.js +0 -96
  233. package/dist/nodes/otel/shared/NodeContent.js.map +0 -1
  234. package/dist/nodes/otel/shared/index.d.ts +0 -8
  235. package/dist/nodes/otel/shared/index.d.ts.map +0 -1
  236. package/dist/nodes/otel/shared/index.js +0 -8
  237. package/dist/nodes/otel/shared/index.js.map +0 -1
  238. package/dist/nodes/otel/shared/types.d.ts +0 -129
  239. package/dist/nodes/otel/shared/types.d.ts.map +0 -1
  240. package/dist/nodes/otel/shared/types.js +0 -5
  241. package/dist/nodes/otel/shared/types.js.map +0 -1
  242. package/dist/nodes/otel/shared/useNodeBehavior.d.ts +0 -42
  243. package/dist/nodes/otel/shared/useNodeBehavior.d.ts.map +0 -1
  244. package/dist/nodes/otel/shared/useNodeBehavior.js +0 -61
  245. package/dist/nodes/otel/shared/useNodeBehavior.js.map +0 -1
  246. package/dist/pierre/PierreThroughlineCodeView.js.map +0 -1
  247. package/dist/subsystem/SubsystemCarousel.d.ts +0 -36
  248. package/dist/subsystem/SubsystemCarousel.d.ts.map +0 -1
  249. package/dist/subsystem/SubsystemCarousel.js +0 -163
  250. package/dist/subsystem/SubsystemCarousel.js.map +0 -1
  251. package/dist/utils/animationMapping.d.ts +0 -53
  252. package/dist/utils/animationMapping.d.ts.map +0 -1
  253. package/dist/utils/animationMapping.js +0 -126
  254. package/dist/utils/animationMapping.js.map +0 -1
  255. package/dist/utils/canvasBounds.d.ts +0 -50
  256. package/dist/utils/canvasBounds.d.ts.map +0 -1
  257. package/dist/utils/canvasBounds.js +0 -88
  258. package/dist/utils/canvasBounds.js.map +0 -1
  259. package/dist/utils/graphConverter.d.ts +0 -18
  260. package/dist/utils/graphConverter.d.ts.map +0 -1
  261. package/dist/utils/graphConverter.js +0 -114
  262. package/dist/utils/graphConverter.js.map +0 -1
  263. package/dist/utils/iconResolver.d.ts +0 -29
  264. package/dist/utils/iconResolver.d.ts.map +0 -1
  265. package/dist/utils/iconResolver.js +0 -30
  266. package/dist/utils/iconResolver.js.map +0 -1
  267. package/dist/utils/orientationUtils.d.ts +0 -19
  268. package/dist/utils/orientationUtils.d.ts.map +0 -1
  269. package/dist/utils/orientationUtils.js +0 -62
  270. 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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"}