@zenwave360/vistas-eventflow 0.1.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.
Files changed (42) hide show
  1. package/FLOWVIEWMODEL_EXAMPLES.md +896 -0
  2. package/LICENSE +21 -0
  3. package/README.md +151 -0
  4. package/dist/EventFlowVisualizer.d.ts +25 -0
  5. package/dist/EventFlowVisualizer.d.ts.map +1 -0
  6. package/dist/ServiceMapVisualizer.d.ts +14 -0
  7. package/dist/ServiceMapVisualizer.d.ts.map +1 -0
  8. package/dist/components/CausationEdge.d.ts +8 -0
  9. package/dist/components/CausationEdge.d.ts.map +1 -0
  10. package/dist/components/CommandNode.d.ts +10 -0
  11. package/dist/components/CommandNode.d.ts.map +1 -0
  12. package/dist/components/EndNode.d.ts +10 -0
  13. package/dist/components/EndNode.d.ts.map +1 -0
  14. package/dist/components/EventNode.d.ts +10 -0
  15. package/dist/components/EventNode.d.ts.map +1 -0
  16. package/dist/components/OutcomeNode.d.ts +7 -0
  17. package/dist/components/OutcomeNode.d.ts.map +1 -0
  18. package/dist/components/PolicyNode.d.ts +16 -0
  19. package/dist/components/PolicyNode.d.ts.map +1 -0
  20. package/dist/components/ServiceGroupNode.d.ts +10 -0
  21. package/dist/components/ServiceGroupNode.d.ts.map +1 -0
  22. package/dist/components/ServiceMapNode.d.ts +8 -0
  23. package/dist/components/ServiceMapNode.d.ts.map +1 -0
  24. package/dist/components/StartNode.d.ts +10 -0
  25. package/dist/components/StartNode.d.ts.map +1 -0
  26. package/dist/components/SystemGroupNode.d.ts +7 -0
  27. package/dist/components/SystemGroupNode.d.ts.map +1 -0
  28. package/dist/index.d.ts +29 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +645 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/labelFormatting.d.ts +6 -0
  33. package/dist/labelFormatting.d.ts.map +1 -0
  34. package/dist/styles.css +1 -0
  35. package/dist/types/FlowViewModel-updated.d.ts +114 -0
  36. package/dist/types/FlowViewModel-updated.d.ts.map +1 -0
  37. package/dist/types/FlowViewModel.d.ts +124 -0
  38. package/dist/types/FlowViewModel.d.ts.map +1 -0
  39. package/dist/types/ServiceViewModel.d.ts +64 -0
  40. package/dist/types/ServiceViewModel.d.ts.map +1 -0
  41. package/event-flow-architecture-and-contracts.md +1067 -0
  42. package/package.json +54 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2022-2023 ZenWave's Authors and Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,151 @@
1
+ # @zenwave360/vistas-eventflow
2
+
3
+ A React Flow visualizer for EventFlow diagrams with pre-computed positions.
4
+
5
+ ## Features
6
+
7
+ - Event-storming-inspired node legend
8
+ - Timeline-first rendering with no system swimlanes
9
+ - START nodes rendered as green circles
10
+ - END/end-outcome nodes rendered as red squares
11
+ - Visual distinction for `CAUSATION`, `TRIGGER`, `CONDITIONAL`, and `ERROR` edges
12
+ - Light and dark themes
13
+ - Source navigation hooks for IDE integrations
14
+
15
+ ## Quick Start
16
+
17
+ From the monorepo root, run `pnpm install` and then
18
+ `pnpm --filter @zenwave360/vistas-eventflow-webview-app dev`. This opens
19
+ `test.html`, where you can paste `FlowViewModel` JSON to test the viewer.
20
+
21
+ ## Static Bundle For IntelliJ / JCEF
22
+
23
+ Build the static webview bundle with:
24
+
25
+ ```bash
26
+ pnpm --filter @zenwave360/vistas-eventflow-webview-app build
27
+ ```
28
+
29
+ The build output is written to:
30
+
31
+ ```text
32
+ dist/index.html
33
+ ```
34
+
35
+ Vite is configured to emit relative asset paths so the bundle can be loaded from a local `file://` URL inside IntelliJ JCEF.
36
+
37
+ ## Typecheck
38
+
39
+ ```bash
40
+ npm run typecheck
41
+ ```
42
+
43
+ This checks both:
44
+
45
+ - browser app code via `tsconfig.json`
46
+ - Vite and Node-side config via `tsconfig.node.json`
47
+
48
+ ## Basic Usage
49
+
50
+ ```tsx
51
+ import {
52
+ EventFlowVisualizer,
53
+ type FlowViewModel,
54
+ } from '@zenwave360/vistas-eventflow/react';
55
+ import '@zenwave360/vistas-eventflow/styles.css';
56
+
57
+ const flowData: FlowViewModel = {
58
+ schema: "zfl.eventflow.view@1",
59
+ nodes: [
60
+ {
61
+ id: "event:CustomerRequestsSubscriptionRenewal",
62
+ type: "START",
63
+ label: "CustomerRequestsSubscriptionRenewal",
64
+ position: { x: 40, y: 140 },
65
+ dimensions: { width: 100, height: 100 },
66
+ system: null,
67
+ service: null,
68
+ sourceRef: { file: "flow.zfl", line: 1, column: 1 }
69
+ },
70
+ {
71
+ id: "command:renewSubscription",
72
+ type: "COMMAND",
73
+ label: "renewSubscription",
74
+ position: { x: 220, y: 160 },
75
+ dimensions: { width: 180, height: 64 },
76
+ system: "Subscription",
77
+ service: "SubscriptionService",
78
+ sourceRef: { file: "flow.zfl", line: 3, column: 1 }
79
+ }
80
+ ],
81
+ edges: [
82
+ {
83
+ id: "e1",
84
+ source: "event:CustomerRequestsSubscriptionRenewal",
85
+ target: "command:renewSubscription",
86
+ type: "TRIGGER",
87
+ outcome: null,
88
+ label: null,
89
+ sourceRef: null
90
+ }
91
+ ],
92
+ systemGroups: null,
93
+ layout: {
94
+ engine: "elk-layered",
95
+ direction: "LR",
96
+ rankSpacing: 180,
97
+ nodeSpacing: 80
98
+ },
99
+ bounds: { x: 0, y: 0, width: 1200, height: 400 }
100
+ };
101
+ ```
102
+
103
+ ## FlowViewModel Notes
104
+
105
+ - `position` and `dimensions` can be `null` before layout is applied.
106
+ - Node end-state labels are read from `endOutcome`; edge outcome labels are read from `outcome`.
107
+ - When a command emits multiple events for the same `outcome`, the viewer inserts a synthetic outcome pill node at render time.
108
+ - When a command has a single event for an `outcome`, the viewer keeps a direct edge and uses the outcome text as the edge label.
109
+ - The viewer skips nodes without layout information instead of crashing.
110
+ - `systemGroups` may be `null` and is ignored by the viewer.
111
+ - System and service metadata are preserved as tooltip metadata, not as visual grouping.
112
+ - The viewer can emit a full updated `FlowViewModel` after drag-based layout edits via `onFlowViewModelChange`.
113
+
114
+ ## Layout Editing
115
+
116
+ ```tsx
117
+ <EventFlowVisualizer
118
+ flowViewModel={flowData}
119
+ displaySettings={{ humanizeLabels: true }}
120
+ onFlowViewModelChange={(updatedFlowViewModel) => {
121
+ console.log(updatedFlowViewModel.nodes.map((node) => node.position));
122
+ }}
123
+ />
124
+ ```
125
+
126
+ The emitted model keeps the original schema, edges, metadata, and dimensions, while updating node positions and recomputed bounds.
127
+
128
+ `displaySettings.humanizeLabels` is enabled by default and converts viewer labels like `RenewalCancelled` into `Renewal Cancelled` without changing the underlying JSON.
129
+
130
+ ## Node Legend
131
+
132
+ - `START`: green circle
133
+ - `COMMAND`: blue rounded rectangle
134
+ - `EVENT`: orange pill
135
+ - `POLICY`: purple dashed rule box
136
+ - `END`: red square end outcome
137
+
138
+ ## Edge Legend
139
+
140
+ - `CAUSATION`: solid neutral edge
141
+ - `TRIGGER`: dashed purple edge
142
+ - `CONDITIONAL`: dashed teal edge
143
+ - `ERROR`: dashed red edge
144
+
145
+ ## Notes
146
+
147
+ This is a visualization-only component:
148
+
149
+ - Does not parse ZFL source files
150
+ - Does not compute layout positions
151
+ - Renders the provided flow model and preserves branching in the source layout
@@ -0,0 +1,25 @@
1
+ /**
2
+ * EventFlow Visualizer - React Flow visualizer for FlowViewModel
3
+ *
4
+ * The component renders pre-computed flow positions and supports interactive
5
+ * drag-based layout editing without performing automatic layout locally.
6
+ */
7
+ import 'reactflow/dist/style.css';
8
+ import './styles/eventflow.css';
9
+ import { DiagramDisplaySettings } from './labelFormatting';
10
+ import { FlowViewModel, SourceRef } from './types/FlowViewModel';
11
+ export interface EventFlowVisualizerProps {
12
+ flowViewModel: FlowViewModel;
13
+ theme?: 'light' | 'dark';
14
+ editable?: boolean;
15
+ displaySettings?: EventFlowDisplaySettings;
16
+ highlightedNodeIds?: string[];
17
+ onNodeClick?: (nodeId: string, sourceRef?: SourceRef) => void;
18
+ onSelectionChange?: (selectedNodes: string[], selectedEdges: string[]) => void;
19
+ onFlowViewModelChange?: (updatedFlowViewModel: FlowViewModel) => void;
20
+ }
21
+ export interface EventFlowDisplaySettings extends DiagramDisplaySettings {
22
+ }
23
+ export declare function EventFlowVisualizer({ flowViewModel, theme, editable, displaySettings, highlightedNodeIds, onNodeClick, onSelectionChange, onFlowViewModelChange, }: EventFlowVisualizerProps): import("react").JSX.Element;
24
+ export default EventFlowVisualizer;
25
+ //# sourceMappingURL=EventFlowVisualizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventFlowVisualizer.d.ts","sourceRoot":"","sources":["../src/EventFlowVisualizer.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,OAAO,0BAA0B,CAAC;AAClC,OAAO,wBAAwB,CAAC;AAShC,OAAO,EAAE,sBAAsB,EAAiB,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAML,aAAa,EAEb,SAAS,EACV,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,aAAa,CAAC;IAC7B,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,wBAAwB,CAAC;IAC3C,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IAC9D,iBAAiB,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC/E,qBAAqB,CAAC,EAAE,CAAC,oBAAoB,EAAE,aAAa,KAAK,IAAI,CAAC;CACvE;AAED,MAAM,WAAW,wBAAyB,SAAQ,sBAAsB;CAAG;AA8Z3E,wBAAgB,mBAAmB,CAAC,EAClC,aAAa,EACb,KAAe,EACf,QAAe,EACf,eAAe,EACf,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,qBAAqB,GACtB,EAAE,wBAAwB,+BAmJ1B;AAED,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import 'reactflow/dist/style.css';
2
+ import './styles/eventflow.css';
3
+ import { DiagramDisplaySettings } from './labelFormatting';
4
+ import type { ServiceViewModel } from './types/ServiceViewModel';
5
+ export interface ServiceMapVisualizerProps {
6
+ serviceViewModel: ServiceViewModel;
7
+ theme?: 'light' | 'dark';
8
+ editable?: boolean;
9
+ displaySettings?: DiagramDisplaySettings;
10
+ onServiceViewModelChange?: (updatedServiceViewModel: ServiceViewModel) => void;
11
+ }
12
+ export declare function ServiceMapVisualizer({ serviceViewModel, theme, editable, displaySettings, onServiceViewModelChange, }: ServiceMapVisualizerProps): import("react").JSX.Element;
13
+ export default ServiceMapVisualizer;
14
+ //# sourceMappingURL=ServiceMapVisualizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServiceMapVisualizer.d.ts","sourceRoot":"","sources":["../src/ServiceMapVisualizer.tsx"],"names":[],"mappings":"AAQA,OAAO,0BAA0B,CAAC;AAClC,OAAO,wBAAwB,CAAC;AAIhC,OAAO,EAAE,sBAAsB,EAAiB,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAKV,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAGlC,MAAM,WAAW,yBAAyB;IACxC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,wBAAwB,CAAC,EAAE,CAAC,uBAAuB,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAChF;AAiND,wBAAgB,oBAAoB,CAAC,EACnC,gBAAgB,EAChB,KAAe,EACf,QAAgB,EAChB,eAAe,EACf,wBAAwB,GACzB,EAAE,yBAAyB,+BAsD3B;AAED,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { EdgeProps } from 'reactflow';
2
+ import { FlowEdgeType } from '../types/FlowViewModel';
3
+ interface EventFlowEdgeData {
4
+ edgeType?: FlowEdgeType;
5
+ }
6
+ export declare function CausationEdge(props: EdgeProps<EventFlowEdgeData>): import("react").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=CausationEdge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CausationEdge.d.ts","sourceRoot":"","sources":["../../src/components/CausationEdge.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,SAAS,EAAiB,MAAM,WAAW,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,UAAU,iBAAiB;IACzB,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAoBD,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,+BAgChE"}
@@ -0,0 +1,10 @@
1
+ import { NodeProps } from 'reactflow';
2
+ import { SourceRef } from '../types/FlowViewModel';
3
+ export interface CommandNodeData {
4
+ label: string;
5
+ endOutcomeLabels?: string[];
6
+ sourceRef?: SourceRef;
7
+ title?: string;
8
+ }
9
+ export declare function CommandNode({ data }: NodeProps<CommandNodeData>): import("react").JSX.Element;
10
+ //# sourceMappingURL=CommandNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandNode.d.ts","sourceRoot":"","sources":["../../src/components/CommandNode.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAU,SAAS,EAAY,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,eAAe,CAAC,+BAe/D"}
@@ -0,0 +1,10 @@
1
+ import { NodeProps } from 'reactflow';
2
+ import { SourceRef } from '../types/FlowViewModel';
3
+ export interface EndNodeData {
4
+ label: string;
5
+ endOutcomeLabels?: string[];
6
+ sourceRef?: SourceRef;
7
+ title?: string;
8
+ }
9
+ export declare function EndNode({ data }: NodeProps<EndNodeData>): import("react").JSX.Element;
10
+ //# sourceMappingURL=EndNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EndNode.d.ts","sourceRoot":"","sources":["../../src/components/EndNode.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAU,SAAS,EAAY,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,WAAW,CAAC,+BAcvD"}
@@ -0,0 +1,10 @@
1
+ import { NodeProps } from 'reactflow';
2
+ import { SourceRef } from '../types/FlowViewModel';
3
+ export interface EventNodeData {
4
+ label: string;
5
+ endOutcomeLabels?: string[];
6
+ sourceRef?: SourceRef;
7
+ title?: string;
8
+ }
9
+ export declare function EventNode({ data }: NodeProps<EventNodeData>): import("react").JSX.Element;
10
+ //# sourceMappingURL=EventNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventNode.d.ts","sourceRoot":"","sources":["../../src/components/EventNode.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAU,SAAS,EAAY,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,aAAa,CAAC,+BAe3D"}
@@ -0,0 +1,7 @@
1
+ import { NodeProps } from 'reactflow';
2
+ export interface OutcomeNodeData {
3
+ label: string;
4
+ synthetic: true;
5
+ }
6
+ export declare function OutcomeNode({ data }: NodeProps<OutcomeNodeData>): import("react").JSX.Element;
7
+ //# sourceMappingURL=OutcomeNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OutcomeNode.d.ts","sourceRoot":"","sources":["../../src/components/OutcomeNode.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAU,SAAS,EAAY,MAAM,WAAW,CAAC;AAExD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,eAAe,CAAC,+BAQ/D"}
@@ -0,0 +1,16 @@
1
+ import { NodeProps } from 'reactflow';
2
+ import { SourceRef } from '../types/FlowViewModel';
3
+ export interface PolicyNodeData {
4
+ label: string;
5
+ endOutcomeLabels?: string[];
6
+ sourceRef?: SourceRef;
7
+ title?: string;
8
+ policyLabelParts?: {
9
+ when: string;
10
+ condition: string;
11
+ do: string;
12
+ action: string;
13
+ };
14
+ }
15
+ export declare function PolicyNode({ data }: NodeProps<PolicyNodeData>): import("react").JSX.Element;
16
+ //# sourceMappingURL=PolicyNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PolicyNode.d.ts","sourceRoot":"","sources":["../../src/components/PolicyNode.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAU,SAAS,EAAY,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,cAAc,CAAC,+BAwB7D"}
@@ -0,0 +1,10 @@
1
+ import type { NodeProps } from 'reactflow';
2
+ export interface ServiceGroupNodeData {
3
+ legendLabel: string;
4
+ centerLabel: string;
5
+ centerX?: number;
6
+ centerWidth?: number;
7
+ title?: string;
8
+ }
9
+ export declare function ServiceGroupNode({ data }: NodeProps<ServiceGroupNodeData>): import("react").JSX.Element;
10
+ //# sourceMappingURL=ServiceGroupNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServiceGroupNode.d.ts","sourceRoot":"","sources":["../../src/components/ServiceGroupNode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,oBAAoB,CAAC,+BAkBzE"}
@@ -0,0 +1,8 @@
1
+ import type { NodeProps } from 'reactflow';
2
+ export interface ServiceMapNodeData {
3
+ label: string;
4
+ title?: string;
5
+ }
6
+ export declare function ServiceCommandNode({ data }: NodeProps<ServiceMapNodeData>): import("react").JSX.Element;
7
+ export declare function ServiceEventNode({ data }: NodeProps<ServiceMapNodeData>): import("react").JSX.Element;
8
+ //# sourceMappingURL=ServiceMapNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServiceMapNode.d.ts","sourceRoot":"","sources":["../../src/components/ServiceMapNode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,kBAAkB,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,kBAAkB,CAAC,+BAMzE;AAED,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,kBAAkB,CAAC,+BAMvE"}
@@ -0,0 +1,10 @@
1
+ import { NodeProps } from 'reactflow';
2
+ import { SourceRef } from '../types/FlowViewModel';
3
+ export interface StartNodeData {
4
+ label: string;
5
+ endOutcomeLabels?: string[];
6
+ sourceRef?: SourceRef;
7
+ title?: string;
8
+ }
9
+ export declare function StartNode({ data }: NodeProps<StartNodeData>): import("react").JSX.Element;
10
+ //# sourceMappingURL=StartNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StartNode.d.ts","sourceRoot":"","sources":["../../src/components/StartNode.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAU,SAAS,EAAY,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,aAAa,CAAC,+BAiB3D"}
@@ -0,0 +1,7 @@
1
+ import { NodeProps } from 'reactflow';
2
+ import '@reactflow/node-resizer/dist/style.css';
3
+ export interface SystemGroupNodeData {
4
+ label: string;
5
+ }
6
+ export declare function SystemGroupNode({ data, selected }: NodeProps<SystemGroupNodeData>): import("react").JSX.Element;
7
+ //# sourceMappingURL=SystemGroupNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SystemGroupNode.d.ts","sourceRoot":"","sources":["../../src/components/SystemGroupNode.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,wCAAwC,CAAC;AAEhD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,eAAe,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC,mBAAmB,CAAC,+BAYjF"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * EventFlow Visualizer - Main exports
3
+ */
4
+ export { EventFlowVisualizer } from './EventFlowVisualizer';
5
+ export type { EventFlowDisplaySettings, EventFlowVisualizerProps } from './EventFlowVisualizer';
6
+ export { default } from './EventFlowVisualizer';
7
+ export { ServiceMapVisualizer } from './ServiceMapVisualizer';
8
+ export type { ServiceMapVisualizerProps } from './ServiceMapVisualizer';
9
+ export type { DiagramDisplaySettings } from './labelFormatting';
10
+ export { humanizeLabel, humanizeMultilineLabel } from './labelFormatting';
11
+ export type { FlowNode, FlowEdge, FlowIR, } from './types/FlowViewModel';
12
+ export type { SourceRef, Point, Dimensions, FlowNodeView, FlowEdgeView, FlowBounds, FlowSystemGroupView, LayoutMetadata, FlowViewModel, } from './types/FlowViewModel';
13
+ export { FlowNodeType, FlowEdgeType, Direction, createFlowViewModel, } from './types/FlowViewModel';
14
+ export type { ServiceGroupView, ServiceNodeView, ServiceViewModel, } from './types/ServiceViewModel';
15
+ export { ServiceNodeType, createServiceViewModel, } from './types/ServiceViewModel';
16
+ export { StartNode } from './components/StartNode';
17
+ export type { StartNodeData } from './components/StartNode';
18
+ export { CommandNode } from './components/CommandNode';
19
+ export type { CommandNodeData } from './components/CommandNode';
20
+ export { EventNode } from './components/EventNode';
21
+ export type { EventNodeData } from './components/EventNode';
22
+ export { PolicyNode } from './components/PolicyNode';
23
+ export type { PolicyNodeData } from './components/PolicyNode';
24
+ export { EndNode } from './components/EndNode';
25
+ export type { EndNodeData } from './components/EndNode';
26
+ export { OutcomeNode } from './components/OutcomeNode';
27
+ export type { OutcomeNodeData } from './components/OutcomeNode';
28
+ export { CausationEdge } from './components/CausationEdge';
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAChG,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACxE,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAG1E,YAAY,EACV,QAAQ,EACR,QAAQ,EACR,MAAM,GACP,MAAM,uBAAuB,CAAC;AAG/B,YAAY,EACV,SAAS,EACT,KAAK,EACL,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,aAAa,GACd,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,eAAe,EACf,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGhE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC"}