@principal-ai/subsystems-react 0.17.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/README.md +93 -0
- package/dist/components/ConfigurationSelector.d.ts +35 -0
- package/dist/components/ConfigurationSelector.d.ts.map +1 -0
- package/dist/components/ConfigurationSelector.js +63 -0
- package/dist/components/ConfigurationSelector.js.map +1 -0
- package/dist/components/GraphRenderer.d.ts +295 -0
- package/dist/components/GraphRenderer.d.ts.map +1 -0
- package/dist/components/GraphRenderer.js +2008 -0
- package/dist/components/GraphRenderer.js.map +1 -0
- package/dist/components/MultiCanvasRenderer.d.ts +75 -0
- package/dist/components/MultiCanvasRenderer.d.ts.map +1 -0
- package/dist/components/MultiCanvasRenderer.js +203 -0
- package/dist/components/MultiCanvasRenderer.js.map +1 -0
- package/dist/components/NodeTooltip.d.ts +24 -0
- package/dist/components/NodeTooltip.d.ts.map +1 -0
- package/dist/components/NodeTooltip.js +160 -0
- package/dist/components/NodeTooltip.js.map +1 -0
- package/dist/components/SelectionSidebar.d.ts +18 -0
- package/dist/components/SelectionSidebar.d.ts.map +1 -0
- package/dist/components/SelectionSidebar.js +190 -0
- package/dist/components/SelectionSidebar.js.map +1 -0
- package/dist/components/SequenceDiagramRenderer.d.ts +77 -0
- package/dist/components/SequenceDiagramRenderer.d.ts.map +1 -0
- package/dist/components/SequenceDiagramRenderer.js +604 -0
- package/dist/components/SequenceDiagramRenderer.js.map +1 -0
- package/dist/components/WorkflowSequenceDiagram.d.ts +63 -0
- package/dist/components/WorkflowSequenceDiagram.d.ts.map +1 -0
- package/dist/components/WorkflowSequenceDiagram.js +147 -0
- package/dist/components/WorkflowSequenceDiagram.js.map +1 -0
- package/dist/components/dashboard/DashboardRenderer.d.ts +10 -0
- package/dist/components/dashboard/DashboardRenderer.d.ts.map +1 -0
- package/dist/components/dashboard/DashboardRenderer.js +179 -0
- package/dist/components/dashboard/DashboardRenderer.js.map +1 -0
- package/dist/components/dashboard/MetricPanel.d.ts +10 -0
- package/dist/components/dashboard/MetricPanel.d.ts.map +1 -0
- package/dist/components/dashboard/MetricPanel.js +103 -0
- package/dist/components/dashboard/MetricPanel.js.map +1 -0
- package/dist/components/dashboard/MockDataProvider.d.ts +30 -0
- package/dist/components/dashboard/MockDataProvider.d.ts.map +1 -0
- package/dist/components/dashboard/MockDataProvider.js +270 -0
- package/dist/components/dashboard/MockDataProvider.js.map +1 -0
- package/dist/components/dashboard/components/BarChart.d.ts +10 -0
- package/dist/components/dashboard/components/BarChart.d.ts.map +1 -0
- package/dist/components/dashboard/components/BarChart.js +167 -0
- package/dist/components/dashboard/components/BarChart.js.map +1 -0
- package/dist/components/dashboard/components/LineChart.d.ts +10 -0
- package/dist/components/dashboard/components/LineChart.d.ts.map +1 -0
- package/dist/components/dashboard/components/LineChart.js +141 -0
- package/dist/components/dashboard/components/LineChart.js.map +1 -0
- package/dist/components/dashboard/components/MetricCard.d.ts +9 -0
- package/dist/components/dashboard/components/MetricCard.d.ts.map +1 -0
- package/dist/components/dashboard/components/MetricCard.js +163 -0
- package/dist/components/dashboard/components/MetricCard.js.map +1 -0
- package/dist/components/dashboard/components/SourceLink.d.ts +9 -0
- package/dist/components/dashboard/components/SourceLink.d.ts.map +1 -0
- package/dist/components/dashboard/components/SourceLink.js +39 -0
- package/dist/components/dashboard/components/SourceLink.js.map +1 -0
- package/dist/components/dashboard/components/TimeRangeSelector.d.ts +9 -0
- package/dist/components/dashboard/components/TimeRangeSelector.d.ts.map +1 -0
- package/dist/components/dashboard/components/TimeRangeSelector.js +167 -0
- package/dist/components/dashboard/components/TimeRangeSelector.js.map +1 -0
- package/dist/components/dashboard/components/index.d.ts +6 -0
- package/dist/components/dashboard/components/index.d.ts.map +1 -0
- package/dist/components/dashboard/components/index.js +6 -0
- package/dist/components/dashboard/components/index.js.map +1 -0
- package/dist/components/dashboard/index.d.ts +6 -0
- package/dist/components/dashboard/index.d.ts.map +1 -0
- package/dist/components/dashboard/index.js +8 -0
- package/dist/components/dashboard/index.js.map +1 -0
- package/dist/components/dashboard/types.d.ts +74 -0
- package/dist/components/dashboard/types.d.ts.map +1 -0
- package/dist/components/dashboard/types.js +8 -0
- package/dist/components/dashboard/types.js.map +1 -0
- package/dist/components/session-events/SessionEventFeed.d.ts +34 -0
- package/dist/components/session-events/SessionEventFeed.d.ts.map +1 -0
- package/dist/components/session-events/SessionEventFeed.js +1196 -0
- package/dist/components/session-events/SessionEventFeed.js.map +1 -0
- package/dist/components/session-events/index.d.ts +7 -0
- package/dist/components/session-events/index.d.ts.map +1 -0
- package/dist/components/session-events/index.js +6 -0
- package/dist/components/session-events/index.js.map +1 -0
- package/dist/components/state-view/PipelineView.d.ts +14 -0
- package/dist/components/state-view/PipelineView.d.ts.map +1 -0
- package/dist/components/state-view/PipelineView.js +195 -0
- package/dist/components/state-view/PipelineView.js.map +1 -0
- package/dist/components/state-view/index.d.ts +14 -0
- package/dist/components/state-view/index.d.ts.map +1 -0
- package/dist/components/state-view/index.js +12 -0
- package/dist/components/state-view/index.js.map +1 -0
- package/dist/components/state-view/types.d.ts +188 -0
- package/dist/components/state-view/types.d.ts.map +1 -0
- package/dist/components/state-view/types.js +10 -0
- package/dist/components/state-view/types.js.map +1 -0
- package/dist/components/state-view/useStateView.d.ts +32 -0
- package/dist/components/state-view/useStateView.d.ts.map +1 -0
- package/dist/components/state-view/useStateView.js +129 -0
- package/dist/components/state-view/useStateView.js.map +1 -0
- package/dist/contexts/GraphEditContext.d.ts +20 -0
- package/dist/contexts/GraphEditContext.d.ts.map +1 -0
- package/dist/contexts/GraphEditContext.js +8 -0
- package/dist/contexts/GraphEditContext.js.map +1 -0
- package/dist/contexts/TooltipPortalContext.d.ts +8 -0
- package/dist/contexts/TooltipPortalContext.d.ts.map +1 -0
- package/dist/contexts/TooltipPortalContext.js +8 -0
- package/dist/contexts/TooltipPortalContext.js.map +1 -0
- package/dist/edges/CustomEdge.d.ts +24 -0
- package/dist/edges/CustomEdge.d.ts.map +1 -0
- package/dist/edges/CustomEdge.js +222 -0
- package/dist/edges/CustomEdge.js.map +1 -0
- package/dist/edges/GenericEdge.d.ts +18 -0
- package/dist/edges/GenericEdge.d.ts.map +1 -0
- package/dist/edges/GenericEdge.js +10 -0
- package/dist/edges/GenericEdge.js.map +1 -0
- package/dist/graphify/anchor.d.ts +28 -0
- package/dist/graphify/anchor.d.ts.map +1 -0
- package/dist/graphify/anchor.js +132 -0
- package/dist/graphify/anchor.js.map +1 -0
- package/dist/graphify/consolidated.d.ts +210 -0
- package/dist/graphify/consolidated.d.ts.map +1 -0
- package/dist/graphify/consolidated.js +11 -0
- package/dist/graphify/consolidated.js.map +1 -0
- package/dist/graphify/ids.d.ts +19 -0
- package/dist/graphify/ids.d.ts.map +1 -0
- package/dist/graphify/ids.js +46 -0
- package/dist/graphify/ids.js.map +1 -0
- package/dist/graphify/index.d.ts +18 -0
- package/dist/graphify/index.d.ts.map +1 -0
- package/dist/graphify/index.js +12 -0
- package/dist/graphify/index.js.map +1 -0
- package/dist/graphify/kind.d.ts +23 -0
- package/dist/graphify/kind.d.ts.map +1 -0
- package/dist/graphify/kind.js +77 -0
- package/dist/graphify/kind.js.map +1 -0
- package/dist/graphify/resolve.d.ts +48 -0
- package/dist/graphify/resolve.d.ts.map +1 -0
- package/dist/graphify/resolve.js +83 -0
- package/dist/graphify/resolve.js.map +1 -0
- package/dist/graphify/signature.d.ts +87 -0
- package/dist/graphify/signature.d.ts.map +1 -0
- package/dist/graphify/signature.js +276 -0
- package/dist/graphify/signature.js.map +1 -0
- package/dist/graphify/types.d.ts +141 -0
- package/dist/graphify/types.d.ts.map +1 -0
- package/dist/graphify/types.js +8 -0
- package/dist/graphify/types.js.map +1 -0
- package/dist/hooks/useElkLayout.d.ts +66 -0
- package/dist/hooks/useElkLayout.d.ts.map +1 -0
- package/dist/hooks/useElkLayout.js +136 -0
- package/dist/hooks/useElkLayout.js.map +1 -0
- package/dist/hooks/usePathBasedEvents.d.ts +42 -0
- package/dist/hooks/usePathBasedEvents.d.ts.map +1 -0
- package/dist/hooks/usePathBasedEvents.js +119 -0
- package/dist/hooks/usePathBasedEvents.js.map +1 -0
- package/dist/hooks/useSequenceLayout.d.ts +186 -0
- package/dist/hooks/useSequenceLayout.d.ts.map +1 -0
- package/dist/hooks/useSequenceLayout.js +327 -0
- package/dist/hooks/useSequenceLayout.js.map +1 -0
- package/dist/hooks/useUndoRedo.d.ts +80 -0
- package/dist/hooks/useUndoRedo.d.ts.map +1 -0
- package/dist/hooks/useUndoRedo.js +70 -0
- package/dist/hooks/useUndoRedo.js.map +1 -0
- package/dist/index.d.ts +73 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -0
- package/dist/nodes/CustomNode.d.ts +28 -0
- package/dist/nodes/CustomNode.d.ts.map +1 -0
- package/dist/nodes/CustomNode.js +820 -0
- package/dist/nodes/CustomNode.js.map +1 -0
- package/dist/nodes/GenericNode.d.ts +20 -0
- package/dist/nodes/GenericNode.d.ts.map +1 -0
- package/dist/nodes/GenericNode.js +20 -0
- package/dist/nodes/GenericNode.js.map +1 -0
- package/dist/nodes/otel/OtelBoundaryNode.d.ts +55 -0
- package/dist/nodes/otel/OtelBoundaryNode.d.ts.map +1 -0
- package/dist/nodes/otel/OtelBoundaryNode.js +81 -0
- package/dist/nodes/otel/OtelBoundaryNode.js.map +1 -0
- package/dist/nodes/otel/OtelEventNode.d.ts +59 -0
- package/dist/nodes/otel/OtelEventNode.d.ts.map +1 -0
- package/dist/nodes/otel/OtelEventNode.js +82 -0
- package/dist/nodes/otel/OtelEventNode.js.map +1 -0
- package/dist/nodes/otel/OtelResourceNode.d.ts +53 -0
- package/dist/nodes/otel/OtelResourceNode.d.ts.map +1 -0
- package/dist/nodes/otel/OtelResourceNode.js +105 -0
- package/dist/nodes/otel/OtelResourceNode.js.map +1 -0
- package/dist/nodes/otel/OtelScopeNode.d.ts +53 -0
- package/dist/nodes/otel/OtelScopeNode.d.ts.map +1 -0
- package/dist/nodes/otel/OtelScopeNode.js +81 -0
- package/dist/nodes/otel/OtelScopeNode.js.map +1 -0
- package/dist/nodes/otel/OtelSpanConventionNode.d.ts +61 -0
- package/dist/nodes/otel/OtelSpanConventionNode.d.ts.map +1 -0
- package/dist/nodes/otel/OtelSpanConventionNode.js +131 -0
- package/dist/nodes/otel/OtelSpanConventionNode.js.map +1 -0
- package/dist/nodes/otel/index.d.ts +17 -0
- package/dist/nodes/otel/index.d.ts.map +1 -0
- package/dist/nodes/otel/index.js +13 -0
- package/dist/nodes/otel/index.js.map +1 -0
- package/dist/nodes/otel/shared/NodeBadges.d.ts +10 -0
- package/dist/nodes/otel/shared/NodeBadges.d.ts.map +1 -0
- package/dist/nodes/otel/shared/NodeBadges.js +178 -0
- package/dist/nodes/otel/shared/NodeBadges.js.map +1 -0
- package/dist/nodes/otel/shared/NodeContent.d.ts +10 -0
- package/dist/nodes/otel/shared/NodeContent.d.ts.map +1 -0
- package/dist/nodes/otel/shared/NodeContent.js +96 -0
- package/dist/nodes/otel/shared/NodeContent.js.map +1 -0
- package/dist/nodes/otel/shared/index.d.ts +8 -0
- package/dist/nodes/otel/shared/index.d.ts.map +1 -0
- package/dist/nodes/otel/shared/index.js +8 -0
- package/dist/nodes/otel/shared/index.js.map +1 -0
- package/dist/nodes/otel/shared/types.d.ts +129 -0
- package/dist/nodes/otel/shared/types.d.ts.map +1 -0
- package/dist/nodes/otel/shared/types.js +5 -0
- package/dist/nodes/otel/shared/types.js.map +1 -0
- package/dist/nodes/otel/shared/useNodeBehavior.d.ts +42 -0
- package/dist/nodes/otel/shared/useNodeBehavior.d.ts.map +1 -0
- package/dist/nodes/otel/shared/useNodeBehavior.js +61 -0
- package/dist/nodes/otel/shared/useNodeBehavior.js.map +1 -0
- package/dist/pierre/PierreFileView.d.ts +17 -0
- package/dist/pierre/PierreFileView.d.ts.map +1 -0
- package/dist/pierre/PierreFileView.js +46 -0
- package/dist/pierre/PierreFileView.js.map +1 -0
- package/dist/pierre/PierreSnippetView.d.ts +28 -0
- package/dist/pierre/PierreSnippetView.d.ts.map +1 -0
- package/dist/pierre/PierreSnippetView.js +105 -0
- package/dist/pierre/PierreSnippetView.js.map +1 -0
- package/dist/pierre/PierreThroughlineCodeView.d.ts +22 -0
- package/dist/pierre/PierreThroughlineCodeView.d.ts.map +1 -0
- package/dist/pierre/PierreThroughlineCodeView.js +206 -0
- package/dist/pierre/PierreThroughlineCodeView.js.map +1 -0
- package/dist/pierre/constructColors.d.ts +24 -0
- package/dist/pierre/constructColors.d.ts.map +1 -0
- package/dist/pierre/constructColors.js +91 -0
- package/dist/pierre/constructColors.js.map +1 -0
- package/dist/pierre/index.d.ts +12 -0
- package/dist/pierre/index.d.ts.map +1 -0
- package/dist/pierre/index.js +7 -0
- package/dist/pierre/index.js.map +1 -0
- package/dist/pierre/pierreBackground.d.ts +15 -0
- package/dist/pierre/pierreBackground.d.ts.map +1 -0
- package/dist/pierre/pierreBackground.js +31 -0
- package/dist/pierre/pierreBackground.js.map +1 -0
- package/dist/pierre/pierreFileLang.d.ts +27 -0
- package/dist/pierre/pierreFileLang.d.ts.map +1 -0
- package/dist/pierre/pierreFileLang.js +52 -0
- package/dist/pierre/pierreFileLang.js.map +1 -0
- package/dist/pierre/pierreSyntaxTheme.d.ts +11 -0
- package/dist/pierre/pierreSyntaxTheme.d.ts.map +1 -0
- package/dist/pierre/pierreSyntaxTheme.js +20 -0
- package/dist/pierre/pierreSyntaxTheme.js.map +1 -0
- package/dist/pierre/scrollAnchor.d.ts +5 -0
- package/dist/pierre/scrollAnchor.d.ts.map +1 -0
- package/dist/pierre/scrollAnchor.js +9 -0
- package/dist/pierre/scrollAnchor.js.map +1 -0
- package/dist/pierre/sliceSnippet.d.ts +10 -0
- package/dist/pierre/sliceSnippet.d.ts.map +1 -0
- package/dist/pierre/sliceSnippet.js +16 -0
- package/dist/pierre/sliceSnippet.js.map +1 -0
- package/dist/pierre/syntaxTokens.d.ts +11 -0
- package/dist/pierre/syntaxTokens.d.ts.map +1 -0
- package/dist/pierre/syntaxTokens.js +51 -0
- package/dist/pierre/syntaxTokens.js.map +1 -0
- package/dist/stories/Subsystem/ComponentGraph/fixtures.d.ts +8 -0
- package/dist/stories/Subsystem/ComponentGraph/fixtures.d.ts.map +1 -0
- package/dist/stories/Subsystem/ComponentGraph/fixtures.js +116 -0
- package/dist/stories/Subsystem/ComponentGraph/fixtures.js.map +1 -0
- package/dist/subsystem/ComponentDeclaration.d.ts +87 -0
- package/dist/subsystem/ComponentDeclaration.d.ts.map +1 -0
- package/dist/subsystem/ComponentDeclaration.js +374 -0
- package/dist/subsystem/ComponentDeclaration.js.map +1 -0
- package/dist/subsystem/FileDrawer.d.ts +17 -0
- package/dist/subsystem/FileDrawer.d.ts.map +1 -0
- package/dist/subsystem/FileDrawer.js +72 -0
- package/dist/subsystem/FileDrawer.js.map +1 -0
- package/dist/subsystem/GraphLayoutCover.d.ts +20 -0
- package/dist/subsystem/GraphLayoutCover.d.ts.map +1 -0
- package/dist/subsystem/GraphLayoutCover.js +42 -0
- package/dist/subsystem/GraphLayoutCover.js.map +1 -0
- package/dist/subsystem/SubsystemComponentGraph.d.ts +96 -0
- package/dist/subsystem/SubsystemComponentGraph.d.ts.map +1 -0
- package/dist/subsystem/SubsystemComponentGraph.js +1059 -0
- package/dist/subsystem/SubsystemComponentGraph.js.map +1 -0
- package/dist/subsystem/SubsystemFileTree.d.ts +24 -0
- package/dist/subsystem/SubsystemFileTree.d.ts.map +1 -0
- package/dist/subsystem/SubsystemFileTree.js +150 -0
- package/dist/subsystem/SubsystemFileTree.js.map +1 -0
- package/dist/subsystem/declarationRef.d.ts +39 -0
- package/dist/subsystem/declarationRef.d.ts.map +1 -0
- package/dist/subsystem/declarationRef.js +32 -0
- package/dist/subsystem/declarationRef.js.map +1 -0
- package/dist/subsystem/formatDeclaration.d.ts +11 -0
- package/dist/subsystem/formatDeclaration.d.ts.map +1 -0
- package/dist/subsystem/formatDeclaration.js +146 -0
- package/dist/subsystem/formatDeclaration.js.map +1 -0
- package/dist/subsystem/model.d.ts +353 -0
- package/dist/subsystem/model.d.ts.map +1 -0
- package/dist/subsystem/model.js +503 -0
- package/dist/subsystem/model.js.map +1 -0
- package/dist/subsystem/nodes.d.ts +69 -0
- package/dist/subsystem/nodes.d.ts.map +1 -0
- package/dist/subsystem/nodes.js +289 -0
- package/dist/subsystem/nodes.js.map +1 -0
- package/dist/subsystem/paths.d.ts +63 -0
- package/dist/subsystem/paths.d.ts.map +1 -0
- package/dist/subsystem/paths.js +86 -0
- package/dist/subsystem/paths.js.map +1 -0
- package/dist/subsystem/tokenizeComponent.d.ts +20 -0
- package/dist/subsystem/tokenizeComponent.d.ts.map +1 -0
- package/dist/subsystem/tokenizeComponent.js +56 -0
- package/dist/subsystem/tokenizeComponent.js.map +1 -0
- package/dist/subsystem/tokenizeFormatted.d.ts +12 -0
- package/dist/subsystem/tokenizeFormatted.d.ts.map +1 -0
- package/dist/subsystem/tokenizeFormatted.js +13 -0
- package/dist/subsystem/tokenizeFormatted.js.map +1 -0
- package/dist/utils/animationMapping.d.ts +53 -0
- package/dist/utils/animationMapping.d.ts.map +1 -0
- package/dist/utils/animationMapping.js +126 -0
- package/dist/utils/animationMapping.js.map +1 -0
- package/dist/utils/canvasBounds.d.ts +50 -0
- package/dist/utils/canvasBounds.d.ts.map +1 -0
- package/dist/utils/canvasBounds.js +88 -0
- package/dist/utils/canvasBounds.js.map +1 -0
- package/dist/utils/elkLayout.d.ts +137 -0
- package/dist/utils/elkLayout.d.ts.map +1 -0
- package/dist/utils/elkLayout.js +596 -0
- package/dist/utils/elkLayout.js.map +1 -0
- package/dist/utils/graphConverter.d.ts +18 -0
- package/dist/utils/graphConverter.d.ts.map +1 -0
- package/dist/utils/graphConverter.js +114 -0
- package/dist/utils/graphConverter.js.map +1 -0
- package/dist/utils/iconResolver.d.ts +29 -0
- package/dist/utils/iconResolver.d.ts.map +1 -0
- package/dist/utils/iconResolver.js +30 -0
- package/dist/utils/iconResolver.js.map +1 -0
- package/dist/utils/orientationUtils.d.ts +19 -0
- package/dist/utils/orientationUtils.d.ts.map +1 -0
- package/dist/utils/orientationUtils.js +62 -0
- package/dist/utils/orientationUtils.js.map +1 -0
- package/package.json +80 -0
- package/src/components/ConfigurationSelector.tsx +133 -0
- package/src/components/GraphRenderer.tsx +3195 -0
- package/src/components/MultiCanvasRenderer.tsx +295 -0
- package/src/components/NodeTooltip.tsx +279 -0
- package/src/components/PendingChanges.test.tsx +375 -0
- package/src/components/SelectionSidebar.tsx +352 -0
- package/src/components/SequenceDiagramRenderer.tsx +1156 -0
- package/src/components/WorkflowSequenceDiagram.tsx +270 -0
- package/src/components/dashboard/DashboardRenderer.tsx +317 -0
- package/src/components/dashboard/MetricPanel.tsx +254 -0
- package/src/components/dashboard/MockDataProvider.ts +330 -0
- package/src/components/dashboard/components/BarChart.tsx +299 -0
- package/src/components/dashboard/components/LineChart.tsx +279 -0
- package/src/components/dashboard/components/MetricCard.tsx +270 -0
- package/src/components/dashboard/components/SourceLink.tsx +63 -0
- package/src/components/dashboard/components/TimeRangeSelector.tsx +280 -0
- package/src/components/dashboard/components/index.ts +5 -0
- package/src/components/dashboard/index.ts +47 -0
- package/src/components/dashboard/types.ts +126 -0
- package/src/components/session-events/SessionEventFeed.tsx +1797 -0
- package/src/components/session-events/index.ts +13 -0
- package/src/components/state-view/PipelineView.tsx +347 -0
- package/src/components/state-view/index.ts +14 -0
- package/src/components/state-view/types.ts +261 -0
- package/src/components/state-view/useStateView.ts +205 -0
- package/src/contexts/GraphEditContext.tsx +27 -0
- package/src/contexts/TooltipPortalContext.ts +8 -0
- package/src/edges/CustomEdge.tsx +402 -0
- package/src/edges/GenericEdge.tsx +36 -0
- package/src/graphify/anchor.test.ts +124 -0
- package/src/graphify/anchor.ts +160 -0
- package/src/graphify/consolidated.ts +246 -0
- package/src/graphify/ids.ts +48 -0
- package/src/graphify/index.ts +72 -0
- package/src/graphify/kind.test.ts +108 -0
- package/src/graphify/kind.ts +120 -0
- package/src/graphify/resolve.test.ts +89 -0
- package/src/graphify/resolve.ts +115 -0
- package/src/graphify/signature.test.ts +278 -0
- package/src/graphify/signature.ts +354 -0
- package/src/graphify/types.ts +164 -0
- package/src/hooks/useElkLayout.test.ts +134 -0
- package/src/hooks/useElkLayout.ts +191 -0
- package/src/hooks/usePathBasedEvents.ts +192 -0
- package/src/hooks/useSequenceLayout.ts +543 -0
- package/src/hooks/useUndoRedo.ts +144 -0
- package/src/index.ts +341 -0
- package/src/nodes/CustomNode.tsx +1231 -0
- package/src/nodes/GenericNode.tsx +55 -0
- package/src/nodes/otel/OtelBoundaryNode.tsx +224 -0
- package/src/nodes/otel/OtelEventNode.tsx +225 -0
- package/src/nodes/otel/OtelResourceNode.tsx +251 -0
- package/src/nodes/otel/OtelScopeNode.tsx +221 -0
- package/src/nodes/otel/OtelSpanConventionNode.tsx +295 -0
- package/src/nodes/otel/index.ts +23 -0
- package/src/nodes/otel/shared/NodeBadges.tsx +295 -0
- package/src/nodes/otel/shared/NodeContent.tsx +204 -0
- package/src/nodes/otel/shared/index.ts +8 -0
- package/src/nodes/otel/shared/types.ts +138 -0
- package/src/nodes/otel/shared/useNodeBehavior.ts +114 -0
- package/src/pierre/PierreFileView.tsx +81 -0
- package/src/pierre/PierreSnippetView.tsx +184 -0
- package/src/pierre/PierreThroughlineCodeView.tsx +304 -0
- package/src/pierre/constructColors.test.ts +52 -0
- package/src/pierre/constructColors.ts +112 -0
- package/src/pierre/index.ts +18 -0
- package/src/pierre/pierreBackground.ts +33 -0
- package/src/pierre/pierreFileLang.test.ts +26 -0
- package/src/pierre/pierreFileLang.ts +55 -0
- package/src/pierre/pierreSyntaxTheme.ts +23 -0
- package/src/pierre/scrollAnchor.test.ts +13 -0
- package/src/pierre/scrollAnchor.ts +11 -0
- package/src/pierre/sliceSnippet.test.ts +21 -0
- package/src/pierre/sliceSnippet.ts +31 -0
- package/src/pierre/syntaxTokens.test.ts +35 -0
- package/src/pierre/syntaxTokens.ts +60 -0
- package/src/stories/Audit/BoundaryNodes.stories.tsx +385 -0
- package/src/stories/Audit/CanvasEdgeTypes.stories.tsx +1448 -0
- package/src/stories/Audit/CanvasNodeTypes.stories.tsx +1049 -0
- package/src/stories/Audit/ColorPriority.stories.tsx +895 -0
- package/src/stories/Audit/DiamondBadges.stories.tsx +629 -0
- package/src/stories/Audit/NodeDimensionsTesting.stories.tsx +724 -0
- package/src/stories/Audit/NodeFieldsAudit.stories.tsx +996 -0
- package/src/stories/Audit/NodeFontSizeTesting.stories.tsx +715 -0
- package/src/stories/Audit/NodeShapes.stories.tsx +1208 -0
- package/src/stories/Audit/WideNodesTesting.stories.tsx +1045 -0
- package/src/stories/Components/DashboardRenderer.stories.tsx +263 -0
- package/src/stories/Components/GraphRenderer.stories.tsx +3236 -0
- package/src/stories/Components/MultiCanvasRenderer.stories.tsx +370 -0
- package/src/stories/Components/SequenceDiagram.stories.tsx +255 -0
- package/src/stories/Components/StateView.stories.tsx +417 -0
- package/src/stories/Components/TraceViewer.stories.tsx +442 -0
- package/src/stories/Components/WorkflowSequenceDiagram.stories.tsx +802 -0
- package/src/stories/Features/AnimationWorkshop.stories.tsx +727 -0
- package/src/stories/Features/ChangeTypeVisual.stories.tsx +67 -0
- package/src/stories/Features/EventDrivenAnimations.stories.tsx +513 -0
- package/src/stories/Features/MultiConfig.stories.tsx +539 -0
- package/src/stories/Introduction.mdx +34 -0
- package/src/stories/Layout/ElkEdgeRouting.stories.tsx +539 -0
- package/src/stories/Layout/GraphOrientation.stories.tsx +500 -0
- package/src/stories/Layout/MultiDirectionalConnections.stories.tsx +352 -0
- package/src/stories/Nodes/NodeDefinitionComparison.stories.tsx +560 -0
- package/src/stories/Nodes/NodeNameFallbacks.stories.tsx +491 -0
- package/src/stories/Nodes/NumericColors.stories.tsx +440 -0
- package/src/stories/OTEL/EventNameDisplay.stories.tsx +694 -0
- package/src/stories/OTEL/EventNameFallback.stories.tsx +578 -0
- package/src/stories/OTEL/OtelComponents.stories.tsx +422 -0
- package/src/stories/OTEL/OtelNodeTypesPrototype.stories.tsx +806 -0
- package/src/stories/OTEL/RawEventCards.stories.tsx +57 -0
- package/src/stories/OTEL/SpanBadges.stories.tsx +840 -0
- package/src/stories/OTEL/ValidationEventsCanvas.stories.tsx +209 -0
- package/src/stories/Pierre/CodeView.stories.tsx +219 -0
- package/src/stories/RealWorld/BacklogMdCanvases.stories.tsx +721 -0
- package/src/stories/RealWorld/FileCitySequence.stories.tsx +516 -0
- package/src/stories/RealWorld/RealCanvasFiles.stories.tsx +336 -0
- package/src/stories/Subsystem/ComponentDeclarationAudit.stories.tsx +321 -0
- package/src/stories/Subsystem/ComponentGraph/Appearance.stories.tsx +365 -0
- package/src/stories/Subsystem/ComponentGraph/Basics.stories.tsx +137 -0
- package/src/stories/Subsystem/ComponentGraph/Captures.stories.tsx +238 -0
- package/src/stories/Subsystem/ComponentGraph/DetailPanel.stories.tsx +315 -0
- package/src/stories/Subsystem/ComponentGraph/Flows.stories.tsx +239 -0
- package/src/stories/Subsystem/ComponentGraph/FrameworkStereotype.stories.tsx +216 -0
- package/src/stories/Subsystem/ComponentGraph/GraphTitle.stories.tsx +70 -0
- package/src/stories/Subsystem/ComponentGraph/Processes.stories.tsx +68 -0
- package/src/stories/Subsystem/ComponentGraph/Scenarios.stories.tsx +959 -0
- package/src/stories/Subsystem/ComponentGraph/Spotlights.stories.tsx +681 -0
- package/src/stories/Subsystem/ComponentGraph/fixtures.ts +129 -0
- package/src/stories/__traces__/test-run.canvas.json +241 -0
- package/src/stories/data/activity-feed-analytics.dashboard.json +300 -0
- package/src/stories/data/file-city-images-transformed.otel.canvas.json +295 -0
- package/src/stories/data/file-city-workflows.json +269 -0
- package/src/stories/data/graph-converter-test-execution.json +443 -0
- package/src/stories/data/graph-converter-test.workflow.json +105 -0
- package/src/stories/data/graph-converter-validated-execution.json +58 -0
- package/src/stories/data/opencode-session-raw-events.json +273396 -0
- package/src/subsystem/ComponentDeclaration.tsx +643 -0
- package/src/subsystem/FileDrawer.tsx +106 -0
- package/src/subsystem/GraphLayoutCover.tsx +69 -0
- package/src/subsystem/SubsystemComponentGraph.tsx +1644 -0
- package/src/subsystem/SubsystemFileTree.tsx +190 -0
- package/src/subsystem/declarationRef.test.ts +33 -0
- package/src/subsystem/declarationRef.ts +63 -0
- package/src/subsystem/formatDeclaration.ts +174 -0
- package/src/subsystem/model.test.ts +244 -0
- package/src/subsystem/model.ts +850 -0
- package/src/subsystem/nodes.test.ts +56 -0
- package/src/subsystem/nodes.tsx +443 -0
- package/src/subsystem/paths.test.ts +123 -0
- package/src/subsystem/paths.ts +127 -0
- package/src/subsystem/tokenizeComponent.ts +70 -0
- package/src/subsystem/tokenizeFormatted.ts +19 -0
- package/src/utils/animationMapping.ts +166 -0
- package/src/utils/canvasBounds.ts +146 -0
- package/src/utils/elkLayout.test.ts +240 -0
- package/src/utils/elkLayout.ts +779 -0
- package/src/utils/graphConverter.ts +148 -0
- package/src/utils/iconResolver.tsx +53 -0
- package/src/utils/orientationUtils.ts +73 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/graphify/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/graphify/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React hook for ELK layout integration
|
|
3
|
+
*
|
|
4
|
+
* Provides automatic edge routing with circuit-board style paths.
|
|
5
|
+
*/
|
|
6
|
+
import type { Node, Edge } from '@xyflow/react';
|
|
7
|
+
import { type ElkLayoutOptions } from '../utils/elkLayout';
|
|
8
|
+
export interface UseElkLayoutOptions extends ElkLayoutOptions {
|
|
9
|
+
/**
|
|
10
|
+
* Whether ELK layout is enabled
|
|
11
|
+
* @default true
|
|
12
|
+
*/
|
|
13
|
+
enabled?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Debounce delay in ms before recomputing layout
|
|
16
|
+
* @default 100
|
|
17
|
+
*/
|
|
18
|
+
debounceMs?: number;
|
|
19
|
+
}
|
|
20
|
+
export interface UseElkLayoutResult {
|
|
21
|
+
/** Edge paths computed by ELK, keyed by edge ID */
|
|
22
|
+
edgePaths: Map<string, string>;
|
|
23
|
+
/** Edge label positions computed by ELK, keyed by edge ID */
|
|
24
|
+
edgeLabelPositions: Map<string, {
|
|
25
|
+
x: number;
|
|
26
|
+
y: number;
|
|
27
|
+
}>;
|
|
28
|
+
/** Whether layout is currently being computed */
|
|
29
|
+
isLayouting: boolean;
|
|
30
|
+
/** Any error that occurred during layout */
|
|
31
|
+
error: Error | null;
|
|
32
|
+
/** Manually trigger a layout recomputation */
|
|
33
|
+
recomputeLayout: () => void;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Hook for computing ELK layout for edges
|
|
37
|
+
*
|
|
38
|
+
* @param nodes - xyflow nodes
|
|
39
|
+
* @param edges - xyflow edges
|
|
40
|
+
* @param options - Layout options
|
|
41
|
+
* @returns Layout result with edge paths
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```tsx
|
|
45
|
+
* const { edgePaths, isLayouting } = useElkLayout(nodes, edges, {
|
|
46
|
+
* routingStyle: 'orthogonal',
|
|
47
|
+
* edgeSpacing: 15,
|
|
48
|
+
* });
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare function useElkLayout(nodes: Node[], edges: Edge[], options?: UseElkLayoutOptions): UseElkLayoutResult;
|
|
52
|
+
/**
|
|
53
|
+
* Apply ELK-computed paths to edges
|
|
54
|
+
*
|
|
55
|
+
* This utility injects the ELK path data into edge data so CustomEdge can use it.
|
|
56
|
+
*
|
|
57
|
+
* @param edges - Original edges
|
|
58
|
+
* @param edgePaths - ELK-computed paths
|
|
59
|
+
* @param edgeLabelPositions - ELK-computed label positions
|
|
60
|
+
* @returns Edges with ELK path data injected
|
|
61
|
+
*/
|
|
62
|
+
export declare function applyElkPathsToEdges<T extends Edge>(edges: T[], edgePaths: Map<string, string>, edgeLabelPositions: Map<string, {
|
|
63
|
+
x: number;
|
|
64
|
+
y: number;
|
|
65
|
+
}>): T[];
|
|
66
|
+
//# sourceMappingURL=useElkLayout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useElkLayout.d.ts","sourceRoot":"","sources":["../../src/hooks/useElkLayout.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE7E,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,mDAAmD;IACnD,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,6DAA6D;IAC7D,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D,iDAAiD;IACjD,WAAW,EAAE,OAAO,CAAC;IACrB,4CAA4C;IAC5C,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,8CAA8C;IAC9C,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,IAAI,EAAE,EACb,KAAK,EAAE,IAAI,EAAE,EACb,OAAO,GAAE,mBAAwB,GAChC,kBAAkB,CAmGpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,IAAI,EACjD,KAAK,EAAE,CAAC,EAAE,EACV,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GACxD,CAAC,EAAE,CAkBL"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React hook for ELK layout integration
|
|
3
|
+
*
|
|
4
|
+
* Provides automatic edge routing with circuit-board style paths.
|
|
5
|
+
*/
|
|
6
|
+
import { useState, useEffect, useCallback, useRef, useMemo } from 'react';
|
|
7
|
+
import { computeElkLayout } from '../utils/elkLayout';
|
|
8
|
+
/**
|
|
9
|
+
* Hook for computing ELK layout for edges
|
|
10
|
+
*
|
|
11
|
+
* @param nodes - xyflow nodes
|
|
12
|
+
* @param edges - xyflow edges
|
|
13
|
+
* @param options - Layout options
|
|
14
|
+
* @returns Layout result with edge paths
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```tsx
|
|
18
|
+
* const { edgePaths, isLayouting } = useElkLayout(nodes, edges, {
|
|
19
|
+
* routingStyle: 'orthogonal',
|
|
20
|
+
* edgeSpacing: 15,
|
|
21
|
+
* });
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export function useElkLayout(nodes, edges, options = {}) {
|
|
25
|
+
const { enabled = true, debounceMs = 100, ...layoutOptions } = options;
|
|
26
|
+
const [edgePaths, setEdgePaths] = useState(new Map());
|
|
27
|
+
const [edgeLabelPositions, setEdgeLabelPositions] = useState(new Map());
|
|
28
|
+
const [isLayouting, setIsLayouting] = useState(false);
|
|
29
|
+
const [error, setError] = useState(null);
|
|
30
|
+
const timeoutRef = useRef(null);
|
|
31
|
+
const abortRef = useRef(false);
|
|
32
|
+
const hasComputedRef = useRef(null);
|
|
33
|
+
// Create stable refs for nodes and edges
|
|
34
|
+
const nodesRef = useRef(nodes);
|
|
35
|
+
nodesRef.current = nodes;
|
|
36
|
+
const edgesRef = useRef(edges);
|
|
37
|
+
edgesRef.current = edges;
|
|
38
|
+
// Create a stable reference to layout options
|
|
39
|
+
const optionsRef = useRef(layoutOptions);
|
|
40
|
+
optionsRef.current = layoutOptions;
|
|
41
|
+
// Create a stable key based on node/edge structure
|
|
42
|
+
const layoutKey = useMemo(() => {
|
|
43
|
+
const nodeKey = nodes.map(n => `${n.id}:${n.position.x}:${n.position.y}:${n.width ?? 0}:${n.height ?? 0}`).join('|');
|
|
44
|
+
const edgeKey = edges.map(e => `${e.id}:${e.source}:${e.target}`).join('|');
|
|
45
|
+
return `${enabled}:${nodeKey}:${edgeKey}`;
|
|
46
|
+
}, [enabled, nodes, edges]);
|
|
47
|
+
// Compute layout when key changes
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
// Skip if already computed for this key
|
|
50
|
+
if (hasComputedRef.current === layoutKey) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (!enabled || nodesRef.current.length === 0) {
|
|
54
|
+
setEdgePaths(new Map());
|
|
55
|
+
setEdgeLabelPositions(new Map());
|
|
56
|
+
hasComputedRef.current = layoutKey;
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (timeoutRef.current) {
|
|
60
|
+
clearTimeout(timeoutRef.current);
|
|
61
|
+
}
|
|
62
|
+
abortRef.current = false;
|
|
63
|
+
timeoutRef.current = setTimeout(async () => {
|
|
64
|
+
setIsLayouting(true);
|
|
65
|
+
setError(null);
|
|
66
|
+
try {
|
|
67
|
+
const result = await computeElkLayout(nodesRef.current, edgesRef.current, optionsRef.current);
|
|
68
|
+
if (abortRef.current)
|
|
69
|
+
return;
|
|
70
|
+
setEdgePaths(result.edgePaths);
|
|
71
|
+
setEdgeLabelPositions(result.edgeLabelPositions);
|
|
72
|
+
hasComputedRef.current = layoutKey;
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
if (!abortRef.current) {
|
|
76
|
+
setError(err instanceof Error ? err : new Error(String(err)));
|
|
77
|
+
console.error('ELK layout error:', err);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
finally {
|
|
81
|
+
if (!abortRef.current) {
|
|
82
|
+
setIsLayouting(false);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}, debounceMs);
|
|
86
|
+
return () => {
|
|
87
|
+
if (timeoutRef.current) {
|
|
88
|
+
clearTimeout(timeoutRef.current);
|
|
89
|
+
}
|
|
90
|
+
abortRef.current = true;
|
|
91
|
+
};
|
|
92
|
+
}, [layoutKey, enabled, debounceMs]);
|
|
93
|
+
const recomputeLayout = useCallback(() => {
|
|
94
|
+
hasComputedRef.current = null; // Force recompute
|
|
95
|
+
if (timeoutRef.current) {
|
|
96
|
+
clearTimeout(timeoutRef.current);
|
|
97
|
+
}
|
|
98
|
+
// Trigger effect by invalidating the key check
|
|
99
|
+
setIsLayouting(true);
|
|
100
|
+
}, []);
|
|
101
|
+
return {
|
|
102
|
+
edgePaths,
|
|
103
|
+
edgeLabelPositions,
|
|
104
|
+
isLayouting,
|
|
105
|
+
error,
|
|
106
|
+
recomputeLayout,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Apply ELK-computed paths to edges
|
|
111
|
+
*
|
|
112
|
+
* This utility injects the ELK path data into edge data so CustomEdge can use it.
|
|
113
|
+
*
|
|
114
|
+
* @param edges - Original edges
|
|
115
|
+
* @param edgePaths - ELK-computed paths
|
|
116
|
+
* @param edgeLabelPositions - ELK-computed label positions
|
|
117
|
+
* @returns Edges with ELK path data injected
|
|
118
|
+
*/
|
|
119
|
+
export function applyElkPathsToEdges(edges, edgePaths, edgeLabelPositions) {
|
|
120
|
+
return edges.map((edge) => {
|
|
121
|
+
const elkPath = edgePaths.get(edge.id);
|
|
122
|
+
const elkLabelPosition = edgeLabelPositions.get(edge.id);
|
|
123
|
+
if (elkPath) {
|
|
124
|
+
return {
|
|
125
|
+
...edge,
|
|
126
|
+
data: {
|
|
127
|
+
...edge.data,
|
|
128
|
+
elkPath,
|
|
129
|
+
elkLabelPosition,
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
return edge;
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=useElkLayout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useElkLayout.js","sourceRoot":"","sources":["../../src/hooks/useElkLayout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook for processing path-based events and mapping them to animations
|
|
3
|
+
*
|
|
4
|
+
* Handles ComponentActivityEvent and ComponentActionEvent from
|
|
5
|
+
* PathBasedEventProcessor (Milestone 1 & 2)
|
|
6
|
+
*/
|
|
7
|
+
import type { PathBasedEvent } from '@principal-ai/subsystems-core';
|
|
8
|
+
import { type NodeAnimation, type EdgeAnimation } from '../utils/animationMapping';
|
|
9
|
+
/**
|
|
10
|
+
* Animation update callbacks
|
|
11
|
+
*/
|
|
12
|
+
export interface AnimationCallbacks {
|
|
13
|
+
onNodeAnimation: (nodeId: string, animation: NodeAnimation & {
|
|
14
|
+
timestamp: number;
|
|
15
|
+
}) => void;
|
|
16
|
+
onEdgeAnimation: (edgeId: string, animation: EdgeAnimation & {
|
|
17
|
+
timestamp: number;
|
|
18
|
+
}) => void;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Hook options
|
|
22
|
+
*/
|
|
23
|
+
export interface UsePathBasedEventsOptions {
|
|
24
|
+
/** Path-based events to process */
|
|
25
|
+
events: PathBasedEvent[];
|
|
26
|
+
/** Callbacks for triggering animations */
|
|
27
|
+
callbacks: AnimationCallbacks;
|
|
28
|
+
/** Optional callback when event is processed */
|
|
29
|
+
onEventProcessed?: (event: PathBasedEvent) => void;
|
|
30
|
+
/** Minimum log level to trigger animations (default: 'info') */
|
|
31
|
+
minLogLevel?: 'debug' | 'info' | 'warn' | 'error';
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Process path-based events and trigger appropriate animations
|
|
35
|
+
*/
|
|
36
|
+
export declare function usePathBasedEvents({ events, callbacks, onEventProcessed, minLogLevel, }: UsePathBasedEventsOptions): void;
|
|
37
|
+
/**
|
|
38
|
+
* Process a batch of path-based events
|
|
39
|
+
* Useful for processing historical logs or bulk updates
|
|
40
|
+
*/
|
|
41
|
+
export declare function processBatchEvents(events: PathBasedEvent[], callbacks: AnimationCallbacks, minLogLevel?: 'debug' | 'info' | 'warn' | 'error'): void;
|
|
42
|
+
//# sourceMappingURL=usePathBasedEvents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePathBasedEvents.d.ts","sourceRoot":"","sources":["../../src/hooks/usePathBasedEvents.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAIV,cAAc,EACf,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,2BAA2B,CAAC;AAEnC;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,GAAG;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC5F,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,GAAG;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC7F;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,mCAAmC;IACnC,MAAM,EAAE,cAAc,EAAE,CAAC;IAEzB,0CAA0C;IAC1C,SAAS,EAAE,kBAAkB,CAAC;IAE9B,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAEnD,gEAAgE;IAChE,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CACnD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,WAAoB,GACrB,EAAE,yBAAyB,GAAG,IAAI,CAqFlC;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,cAAc,EAAE,EACxB,SAAS,EAAE,kBAAkB,EAC7B,WAAW,GAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAgB,GACxD,IAAI,CAyCN"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook for processing path-based events and mapping them to animations
|
|
3
|
+
*
|
|
4
|
+
* Handles ComponentActivityEvent and ComponentActionEvent from
|
|
5
|
+
* PathBasedEventProcessor (Milestone 1 & 2)
|
|
6
|
+
*/
|
|
7
|
+
import { useEffect, useCallback } from 'react';
|
|
8
|
+
import { logLevelToNodeAnimation, actionToNodeAnimation, actionToEdgeAnimation, } from '../utils/animationMapping';
|
|
9
|
+
/**
|
|
10
|
+
* Process path-based events and trigger appropriate animations
|
|
11
|
+
*/
|
|
12
|
+
export function usePathBasedEvents({ events, callbacks, onEventProcessed, minLogLevel = 'info', }) {
|
|
13
|
+
const { onNodeAnimation, onEdgeAnimation } = callbacks;
|
|
14
|
+
// Process component activity events (Milestone 1)
|
|
15
|
+
const processActivityEvent = useCallback((event) => {
|
|
16
|
+
// Map log level to animation
|
|
17
|
+
const animation = logLevelToNodeAnimation(event.level);
|
|
18
|
+
// Trigger node animation
|
|
19
|
+
onNodeAnimation(event.componentId, {
|
|
20
|
+
...animation,
|
|
21
|
+
timestamp: event.timestamp,
|
|
22
|
+
});
|
|
23
|
+
onEventProcessed?.(event);
|
|
24
|
+
}, [onNodeAnimation, onEventProcessed]);
|
|
25
|
+
// Process component action events (Milestone 2)
|
|
26
|
+
const processActionEvent = useCallback((event) => {
|
|
27
|
+
// Map action/state to animation
|
|
28
|
+
const animation = actionToNodeAnimation(event.action, event.state);
|
|
29
|
+
// Trigger node animation
|
|
30
|
+
onNodeAnimation(event.componentId, {
|
|
31
|
+
...animation,
|
|
32
|
+
timestamp: event.timestamp,
|
|
33
|
+
});
|
|
34
|
+
onEventProcessed?.(event);
|
|
35
|
+
}, [onNodeAnimation, onEventProcessed]);
|
|
36
|
+
// Process edge animation events (Milestone 2)
|
|
37
|
+
const processEdgeAnimationEvent = useCallback((event) => {
|
|
38
|
+
const animation = actionToEdgeAnimation(event.triggeredBy?.action || 'unknown', {
|
|
39
|
+
type: event.animation,
|
|
40
|
+
duration: event.duration,
|
|
41
|
+
direction: event.direction,
|
|
42
|
+
});
|
|
43
|
+
onEdgeAnimation(event.edgeId, {
|
|
44
|
+
...animation,
|
|
45
|
+
timestamp: event.timestamp,
|
|
46
|
+
});
|
|
47
|
+
onEventProcessed?.(event);
|
|
48
|
+
}, [onEdgeAnimation, onEventProcessed]);
|
|
49
|
+
// Process events when they change
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
if (events.length === 0)
|
|
52
|
+
return;
|
|
53
|
+
// Process the latest event
|
|
54
|
+
const latestEvent = events[events.length - 1];
|
|
55
|
+
switch (latestEvent.type) {
|
|
56
|
+
case 'component-activity': {
|
|
57
|
+
// Milestone 1: Component activity from log
|
|
58
|
+
// Check if log level is high enough to trigger animation
|
|
59
|
+
const levels = ['debug', 'info', 'warn', 'error'];
|
|
60
|
+
if (levels.indexOf(latestEvent.level) >= levels.indexOf(minLogLevel)) {
|
|
61
|
+
processActivityEvent(latestEvent);
|
|
62
|
+
}
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
case 'component-action':
|
|
66
|
+
// Milestone 2: Specific action from pattern match
|
|
67
|
+
processActionEvent(latestEvent);
|
|
68
|
+
break;
|
|
69
|
+
case 'edge-animation':
|
|
70
|
+
// Milestone 2: Edge activation from action trigger
|
|
71
|
+
processEdgeAnimationEvent(latestEvent);
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
}, [events, processActivityEvent, processActionEvent, processEdgeAnimationEvent, minLogLevel]);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Process a batch of path-based events
|
|
78
|
+
* Useful for processing historical logs or bulk updates
|
|
79
|
+
*/
|
|
80
|
+
export function processBatchEvents(events, callbacks, minLogLevel = 'info') {
|
|
81
|
+
const levels = ['debug', 'info', 'warn', 'error'];
|
|
82
|
+
const minLevelIndex = levels.indexOf(minLogLevel);
|
|
83
|
+
for (const event of events) {
|
|
84
|
+
switch (event.type) {
|
|
85
|
+
case 'component-activity':
|
|
86
|
+
if (levels.indexOf(event.level) >= minLevelIndex) {
|
|
87
|
+
const animation = logLevelToNodeAnimation(event.level);
|
|
88
|
+
callbacks.onNodeAnimation(event.componentId, {
|
|
89
|
+
...animation,
|
|
90
|
+
timestamp: event.timestamp,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
break;
|
|
94
|
+
case 'component-action':
|
|
95
|
+
{
|
|
96
|
+
const animation = actionToNodeAnimation(event.action, event.state);
|
|
97
|
+
callbacks.onNodeAnimation(event.componentId, {
|
|
98
|
+
...animation,
|
|
99
|
+
timestamp: event.timestamp,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
break;
|
|
103
|
+
case 'edge-animation':
|
|
104
|
+
{
|
|
105
|
+
const animation = actionToEdgeAnimation(event.triggeredBy?.action || 'unknown', {
|
|
106
|
+
type: event.animation,
|
|
107
|
+
duration: event.duration,
|
|
108
|
+
direction: event.direction,
|
|
109
|
+
});
|
|
110
|
+
callbacks.onEdgeAnimation(event.edgeId, {
|
|
111
|
+
...animation,
|
|
112
|
+
timestamp: event.timestamp,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=usePathBasedEvents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePathBasedEvents.js","sourceRoot":"","sources":["../../src/hooks/usePathBasedEvents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React hook for sequence diagram layout
|
|
3
|
+
*
|
|
4
|
+
* Computes swimlane-based positioning for events. Lanes default to the first
|
|
5
|
+
* dotted segment of each event name. Callers can drill deeper by passing
|
|
6
|
+
* `openedNamespaces`: any prefix listed there has its events pushed one level
|
|
7
|
+
* deeper, so its children appear as their own lanes instead of being grouped
|
|
8
|
+
* under the parent.
|
|
9
|
+
*/
|
|
10
|
+
import type { Node, Edge } from '@xyflow/react';
|
|
11
|
+
/**
|
|
12
|
+
* Input event for sequence layout
|
|
13
|
+
*/
|
|
14
|
+
export interface SequenceEvent {
|
|
15
|
+
/** Unique event identifier */
|
|
16
|
+
id: string;
|
|
17
|
+
/** Event name with namespace (e.g., "auth.validation.started") */
|
|
18
|
+
name: string;
|
|
19
|
+
/** Optional display label (defaults to name) */
|
|
20
|
+
label?: string;
|
|
21
|
+
/** Optional event type for styling */
|
|
22
|
+
type?: string;
|
|
23
|
+
/** Whether this is a move event (crosses participant boundaries) */
|
|
24
|
+
moveEvent?: boolean;
|
|
25
|
+
/** Participant this event belongs to (for move events, this is the target) */
|
|
26
|
+
participant?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Optional source-file path this event originated from, expressed
|
|
29
|
+
* relative to the repository root (e.g.
|
|
30
|
+
* `auth-server/src/lib/auth-provider.ts`). Surfaced on the React Flow
|
|
31
|
+
* node `data` so downstream renderers (file-city overlays, jump-to-source,
|
|
32
|
+
* IDE bridges) can react to selection without reaching into `data`.
|
|
33
|
+
*/
|
|
34
|
+
sourcePath?: string;
|
|
35
|
+
/** Additional data to pass through to the node */
|
|
36
|
+
data?: Record<string, unknown>;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Input edge for sequence layout
|
|
40
|
+
*/
|
|
41
|
+
export interface SequenceEdge {
|
|
42
|
+
/** Unique edge identifier */
|
|
43
|
+
id: string;
|
|
44
|
+
/** Source event ID */
|
|
45
|
+
fromEvent: string;
|
|
46
|
+
/** Target event ID */
|
|
47
|
+
toEvent: string;
|
|
48
|
+
/** Optional edge label */
|
|
49
|
+
label?: string;
|
|
50
|
+
/** Optional edge type for styling */
|
|
51
|
+
type?: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Swimlane information computed from events
|
|
55
|
+
*/
|
|
56
|
+
export interface Swimlane {
|
|
57
|
+
/** Namespace identifier for this lane */
|
|
58
|
+
namespace: string;
|
|
59
|
+
/** Display label for the lane header (last segment of the namespace) */
|
|
60
|
+
label: string;
|
|
61
|
+
/** X position of the lane center */
|
|
62
|
+
x: number;
|
|
63
|
+
/** Parent namespace (one segment shallower), if any */
|
|
64
|
+
parentNamespace?: string;
|
|
65
|
+
/** Whether this lane's namespace is in `openedNamespaces` (its events have been drilled deeper) */
|
|
66
|
+
isOpened: boolean;
|
|
67
|
+
/** Whether the immediate parent namespace is opened (this lane only exists because its parent was drilled into) */
|
|
68
|
+
isParentOpened: boolean;
|
|
69
|
+
/** Whether any event extends strictly past this lane's namespace (so opening would split it further) */
|
|
70
|
+
canExpand: boolean;
|
|
71
|
+
/** Events directly assigned to this lane */
|
|
72
|
+
eventIds: string[];
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Options for sequence layout
|
|
76
|
+
*/
|
|
77
|
+
export interface UseSequenceLayoutOptions {
|
|
78
|
+
/**
|
|
79
|
+
* Namespace prefixes whose events should be drilled one segment deeper.
|
|
80
|
+
* Pass an array or a Set. Each entry is a dotted prefix (e.g. `auth` or
|
|
81
|
+
* `auth.user`). When listed, events under that prefix land in lanes one
|
|
82
|
+
* level deeper than the prefix, instead of all sharing the prefix lane.
|
|
83
|
+
* Drilling is recursive: list both `auth` and `auth.user` to drill twice.
|
|
84
|
+
*/
|
|
85
|
+
openedNamespaces?: string[] | Set<string>;
|
|
86
|
+
/**
|
|
87
|
+
* Explicit left-to-right order for lanes, by resolved namespace. Listed
|
|
88
|
+
* namespaces are placed first in the given order; any lanes not present in
|
|
89
|
+
* the list fall back to first-event order (the order in which their first
|
|
90
|
+
* event appears in `events`). Unknown entries are ignored.
|
|
91
|
+
*/
|
|
92
|
+
laneOrder?: string[];
|
|
93
|
+
/**
|
|
94
|
+
* Width of each swimlane
|
|
95
|
+
* @default 250
|
|
96
|
+
*/
|
|
97
|
+
laneWidth?: number;
|
|
98
|
+
/**
|
|
99
|
+
* Gap between swimlanes
|
|
100
|
+
* @default 10
|
|
101
|
+
*/
|
|
102
|
+
laneGap?: number;
|
|
103
|
+
/**
|
|
104
|
+
* Vertical spacing between events
|
|
105
|
+
* @default 80
|
|
106
|
+
*/
|
|
107
|
+
eventSpacing?: number;
|
|
108
|
+
/**
|
|
109
|
+
* Height reserved for lane headers
|
|
110
|
+
* @default 60
|
|
111
|
+
*/
|
|
112
|
+
headerHeight?: number;
|
|
113
|
+
/**
|
|
114
|
+
* Node marker width
|
|
115
|
+
* @default 14
|
|
116
|
+
*/
|
|
117
|
+
nodeWidth?: number;
|
|
118
|
+
/**
|
|
119
|
+
* Node marker height
|
|
120
|
+
* @default 14
|
|
121
|
+
*/
|
|
122
|
+
nodeHeight?: number;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* A header cell for an opened ancestor namespace, sitting above the leaf
|
|
126
|
+
* lanes it groups. Rendered as a row in the header strip.
|
|
127
|
+
*/
|
|
128
|
+
export interface ParentHeader {
|
|
129
|
+
/** Full ancestor namespace (always in `openedNamespaces`) */
|
|
130
|
+
namespace: string;
|
|
131
|
+
/** Last segment, for display */
|
|
132
|
+
label: string;
|
|
133
|
+
/** Center x of the cell */
|
|
134
|
+
x: number;
|
|
135
|
+
/** Total span width across the leaf lanes underneath */
|
|
136
|
+
width: number;
|
|
137
|
+
/** 1-based depth in the header strip (1 = topmost row) */
|
|
138
|
+
depth: number;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Result from sequence layout computation
|
|
142
|
+
*/
|
|
143
|
+
export interface UseSequenceLayoutResult {
|
|
144
|
+
/** Positioned nodes for React Flow */
|
|
145
|
+
nodes: Node[];
|
|
146
|
+
/** Edges for React Flow */
|
|
147
|
+
edges: Edge[];
|
|
148
|
+
/** Leaf swimlanes — each gets a lifeline and a leaf header row */
|
|
149
|
+
swimlanes: Swimlane[];
|
|
150
|
+
/**
|
|
151
|
+
* Header cells for opened ancestor namespaces. Stack above the leaf
|
|
152
|
+
* headers; depth 1 sits at the top of the header strip.
|
|
153
|
+
*/
|
|
154
|
+
parentHeaders: ParentHeader[];
|
|
155
|
+
/** Number of header rows (= max leaf depth). At least 1. */
|
|
156
|
+
headerRows: number;
|
|
157
|
+
/** Total width of the diagram */
|
|
158
|
+
totalWidth: number;
|
|
159
|
+
/** Total height of the diagram */
|
|
160
|
+
totalHeight: number;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* useSequenceLayout
|
|
164
|
+
*
|
|
165
|
+
* @param events - Events to lay out
|
|
166
|
+
* @param sequenceEdges - Edges connecting events
|
|
167
|
+
* @param options - Layout options (lane sizing, openedNamespaces)
|
|
168
|
+
*
|
|
169
|
+
* @example
|
|
170
|
+
* ```tsx
|
|
171
|
+
* const { nodes, edges, swimlanes } = useSequenceLayout(
|
|
172
|
+
* [
|
|
173
|
+
* { id: '1', name: 'auth.validation.started' },
|
|
174
|
+
* { id: '2', name: 'auth.validation.completed' },
|
|
175
|
+
* { id: '3', name: 'database.query.executed' },
|
|
176
|
+
* ],
|
|
177
|
+
* [
|
|
178
|
+
* { id: 'e1', fromEvent: '1', toEvent: '2' },
|
|
179
|
+
* { id: 'e2', fromEvent: '2', toEvent: '3' },
|
|
180
|
+
* ],
|
|
181
|
+
* { openedNamespaces: ['auth'] }, // drill `auth` to show validation/token as separate lanes
|
|
182
|
+
* );
|
|
183
|
+
* ```
|
|
184
|
+
*/
|
|
185
|
+
export declare function useSequenceLayout(events: SequenceEvent[], sequenceEdges: SequenceEdge[], options?: UseSequenceLayoutOptions): UseSequenceLayoutResult;
|
|
186
|
+
//# sourceMappingURL=useSequenceLayout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSequenceLayout.d.ts","sourceRoot":"","sources":["../../src/hooks/useSequenceLayout.ts"],"names":[],"mappings":"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"}
|