@sudobility/testomniac_ui 0.0.35 → 0.0.36

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.
@@ -1,16 +1,16 @@
1
1
  import '@xyflow/react/dist/style.css';
2
- import type { NavigationGraphEdge, NavigationGraphNode } from '@sudobility/testomniac_client';
2
+ import type { GraphTransition, GraphView } from '@sudobility/testomniac_client';
3
3
  interface PagesGraphViewProps {
4
- nodes: NavigationGraphNode[];
5
- edges: NavigationGraphEdge[];
6
- route: NavigationGraphEdge[] | null;
7
- selectedTargetPageId: number | null;
8
- onSelectTarget: (pageId: number | null) => void;
4
+ views: GraphView[];
5
+ transitions: GraphTransition[];
6
+ route: GraphTransition[] | null;
7
+ selectedTargetViewId: number | null;
8
+ onSelectTarget: (viewId: number | null) => void;
9
9
  showRemoved: boolean;
10
10
  onToggleRemoved: (next: boolean) => void;
11
- originPageId: number | null;
11
+ originViewId: number | null;
12
12
  fill?: boolean;
13
13
  }
14
- export declare function PagesGraphView({ nodes, edges, route, selectedTargetPageId, onSelectTarget, showRemoved, onToggleRemoved, originPageId, fill, }: PagesGraphViewProps): import("react").JSX.Element;
14
+ export declare function PagesGraphView({ views, transitions, route, selectedTargetViewId, onSelectTarget, showRemoved, onToggleRemoved, originViewId, fill, }: PagesGraphViewProps): import("react").JSX.Element;
15
15
  export {};
16
16
  //# sourceMappingURL=PagesGraphView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PagesGraphView.d.ts","sourceRoot":"","sources":["../../../src/components/pages/PagesGraphView.tsx"],"names":[],"mappings":"AAYA,OAAO,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAM9F,UAAU,mBAAmB;IAC3B,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,KAAK,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC;IACpC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAKD,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,KAAK,EACL,KAAK,EACL,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,eAAe,EACf,YAAY,EACZ,IAAI,GACL,EAAE,mBAAmB,+BAqLrB"}
1
+ {"version":3,"file":"PagesGraphView.d.ts","sourceRoot":"","sources":["../../../src/components/pages/PagesGraphView.tsx"],"names":[],"mappings":"AAYA,OAAO,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAMhF,UAAU,mBAAmB;IAC3B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,KAAK,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IAChC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAeD,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,WAAW,EACX,KAAK,EACL,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,eAAe,EACf,YAAY,EACZ,IAAI,GACL,EAAE,mBAAmB,+BA+NrB"}
@@ -5,86 +5,137 @@ import '@xyflow/react/dist/style.css';
5
5
  import { assignColumns, MAX_GRAPH_NODES, UNREACHABLE_COLUMN } from './graphLayout';
6
6
  const COLUMN_WIDTH = 260;
7
7
  const ROW_HEIGHT = 90;
8
- const edgeKey = (edge) => `${edge.fromPageId}-${edge.toRelativePath}-${edge.kind}-${edge.selector}`;
9
- export function PagesGraphView({ nodes, edges, route, selectedTargetPageId, onSelectTarget, showRemoved, onToggleRemoved, originPageId, fill, }) {
8
+ /**
9
+ * Label for a view.
10
+ *
11
+ * Several views can share one URL path — a cart with items and an empty one, a
12
+ * modal open and closed. That separation is the whole reason the graph is keyed
13
+ * on signatures, so a shared path gets a short signature suffix rather than
14
+ * collapsing into indistinguishable duplicates.
15
+ */
16
+ function labelFor(view, sharesPath) {
17
+ const base = view.title ? `${view.urlPath} · ${view.title}` : view.urlPath;
18
+ return sharesPath ? `${base} · ${view.signature.slice(0, 6)}` : base;
19
+ }
20
+ export function PagesGraphView({ views, transitions, route, selectedTargetViewId, onSelectTarget, showRemoved, onToggleRemoved, originViewId, fill, }) {
21
+ const pathCounts = useMemo(() => {
22
+ const counts = new Map();
23
+ for (const view of views) {
24
+ counts.set(view.urlPath, (counts.get(view.urlPath) ?? 0) + 1);
25
+ }
26
+ return counts;
27
+ }, [views]);
28
+ /**
29
+ * Views nothing links to. The scan bootstraps by navigating directly to many
30
+ * paths, so an orphan is worth surfacing rather than hiding.
31
+ */
32
+ const inbound = useMemo(() => {
33
+ const seen = new Set();
34
+ for (const transition of transitions) {
35
+ if (transition.removedAt == null && transition.toViewId != null) {
36
+ seen.add(transition.toViewId);
37
+ }
38
+ }
39
+ return seen;
40
+ }, [transitions]);
10
41
  const { flowNodes, flowEdges, droppedCount, unreachableCount } = useMemo(() => {
11
- const liveEdges = edges.filter(edge => edge.removedAt == null);
12
- const origin = originPageId ?? nodes[0]?.pageId ?? 0;
13
- const { columns, unreachable } = assignColumns(nodes, liveEdges, origin);
14
- // Cap by distance from the origin, keeping the nearest. Unreachable
15
- // pages sort last so they are dropped first.
16
- const ordered = [...nodes].sort((a, b) => {
17
- const ca = columns.get(a.pageId) ?? UNREACHABLE_COLUMN;
18
- const cb = columns.get(b.pageId) ?? UNREACHABLE_COLUMN;
42
+ const liveEdges = transitions.filter(edge => edge.removedAt == null);
43
+ const origin = originViewId ?? views[0]?.id ?? 0;
44
+ const { columns, unreachable } = assignColumns(views, liveEdges, origin);
45
+ // Cap by distance from the origin, keeping the nearest. Unreachable views
46
+ // sort last so they are dropped first.
47
+ const ordered = [...views].sort((a, b) => {
48
+ const ca = columns.get(a.id) ?? UNREACHABLE_COLUMN;
49
+ const cb = columns.get(b.id) ?? UNREACHABLE_COLUMN;
19
50
  const ra = ca === UNREACHABLE_COLUMN ? Number.MAX_SAFE_INTEGER : ca;
20
51
  const rb = cb === UNREACHABLE_COLUMN ? Number.MAX_SAFE_INTEGER : cb;
21
52
  if (ra !== rb)
22
53
  return ra - rb;
23
- return a.relativePath.localeCompare(b.relativePath);
54
+ return a.urlPath.localeCompare(b.urlPath);
24
55
  });
25
56
  const kept = ordered.slice(0, MAX_GRAPH_NODES);
26
- const keptIds = new Set(kept.map(node => node.pageId));
57
+ const keptIds = new Set(kept.map(view => view.id));
27
58
  // Fixed x for the unreachable column, computed BEFORE positioning so it
28
59
  // does not depend on mutation order of rowByColumn.
29
- const maxColumn = kept.reduce((acc, node) => {
30
- const column = columns.get(node.pageId) ?? UNREACHABLE_COLUMN;
60
+ const maxColumn = kept.reduce((acc, view) => {
61
+ const column = columns.get(view.id) ?? UNREACHABLE_COLUMN;
31
62
  return column > acc ? column : acc;
32
63
  }, 0);
33
64
  const unreachableX = (maxColumn + 2) * COLUMN_WIDTH;
34
65
  // Stable ordering within a column: by path, never by insertion.
35
66
  const rowByColumn = new Map();
36
- const positioned = kept.map(node => {
37
- const column = columns.get(node.pageId) ?? UNREACHABLE_COLUMN;
67
+ const positioned = kept.map(view => {
68
+ const column = columns.get(view.id) ?? UNREACHABLE_COLUMN;
38
69
  const row = rowByColumn.get(column) ?? 0;
39
70
  rowByColumn.set(column, row + 1);
40
- const isTarget = node.pageId === selectedTargetPageId;
71
+ const isTarget = view.id === selectedTargetViewId;
41
72
  return {
42
- id: String(node.pageId),
73
+ id: String(view.id),
43
74
  position: {
44
75
  x: column === UNREACHABLE_COLUMN ? unreachableX : column * COLUMN_WIDTH,
45
76
  y: row * ROW_HEIGHT,
46
77
  },
47
- data: { label: node.relativePath },
78
+ data: {
79
+ label: labelFor(view, (pathCounts.get(view.urlPath) ?? 0) > 1),
80
+ },
48
81
  className: [
49
82
  'rounded-md border px-3 py-2 text-xs',
50
83
  isTarget
51
84
  ? 'border-foreground bg-foreground text-background'
52
85
  : 'border-border bg-card text-foreground',
53
- !node.hasInboundEdge ? 'ring-1 ring-destructive' : '',
54
- node.requiresLogin ? 'italic' : '',
86
+ !inbound.has(view.id) ? 'ring-1 ring-destructive' : '',
55
87
  ]
56
88
  .filter(Boolean)
57
89
  .join(' '),
58
90
  };
59
91
  });
60
- const routeKeys = new Set((route ?? []).map(edgeKey));
61
- const visible = edges.filter(edge => keptIds.has(edge.fromPageId) &&
62
- keptIds.has(edge.toPageId) &&
92
+ const routeIds = new Set((route ?? []).map(edge => edge.id));
93
+ const visible = transitions.filter(edge => edge.toViewId != null &&
94
+ keptIds.has(edge.fromViewId) &&
95
+ keptIds.has(edge.toViewId) &&
63
96
  (showRemoved || edge.removedAt == null));
64
97
  const flow = visible.map(edge => {
65
- const onRoute = routeKeys.has(edgeKey(edge));
98
+ const onRoute = routeIds.has(edge.id);
66
99
  const removed = edge.removedAt != null;
100
+ // A transition callers have reported failing is worth seeing before it is
101
+ // walked: routing only demotes such an edge, it never removes it.
102
+ const unreliable = edge.failureCount > 0;
67
103
  return {
68
- id: edgeKey(edge),
69
- source: String(edge.fromPageId),
70
- target: String(edge.toPageId),
71
- label: edge.label ?? undefined,
104
+ id: String(edge.id),
105
+ source: String(edge.fromViewId),
106
+ target: String(edge.toViewId),
107
+ label: edge.triggerLabel ?? undefined,
72
108
  markerEnd: { type: MarkerType.ArrowClosed },
73
109
  animated: onRoute,
74
110
  style: {
75
111
  strokeWidth: onRoute ? 3 : 1,
76
112
  opacity: route && !onRoute ? 0.25 : removed ? 0.4 : 1,
77
- strokeDasharray: removed ? '2 4' : edge.kind === 'declared' ? '6 4' : undefined,
113
+ strokeDasharray: removed
114
+ ? '2 4'
115
+ : unreliable
116
+ ? '1 3'
117
+ : edge.kind === 'declared'
118
+ ? '6 4'
119
+ : undefined,
78
120
  },
79
121
  };
80
122
  });
81
123
  return {
82
124
  flowNodes: positioned,
83
125
  flowEdges: flow,
84
- droppedCount: nodes.length - kept.length,
126
+ droppedCount: views.length - kept.length,
85
127
  unreachableCount: unreachable.length,
86
128
  };
87
- }, [nodes, edges, route, selectedTargetPageId, showRemoved, originPageId]);
129
+ }, [
130
+ views,
131
+ transitions,
132
+ route,
133
+ selectedTargetViewId,
134
+ showRemoved,
135
+ originViewId,
136
+ pathCounts,
137
+ inbound,
138
+ ]);
88
139
  const [rfNodes, setRfNodes, onNodesChange] = useNodesState(flowNodes);
89
140
  const [rfEdges, setRfEdges, onEdgesChange] = useEdgesState(flowEdges);
90
141
  // useNodesState/useEdgesState only SEED state from their argument. Without
@@ -95,16 +146,16 @@ export function PagesGraphView({ nodes, edges, route, selectedTargetPageId, onSe
95
146
  setRfEdges(flowEdges);
96
147
  }, [flowNodes, flowEdges, setRfNodes, setRfEdges]);
97
148
  const originLabel = useMemo(() => {
98
- const match = nodes.find(node => node.pageId === originPageId);
99
- return match?.relativePath ?? '(unresolved)';
100
- }, [nodes, originPageId]);
101
- if (nodes.length === 0) {
149
+ const match = views.find(view => view.id === originViewId);
150
+ return match?.urlPath ?? '(unresolved)';
151
+ }, [views, originViewId]);
152
+ if (views.length === 0) {
102
153
  return (_jsx("div", { className: "py-8 text-center text-muted-foreground", children: _jsx("p", { className: "text-muted-foreground", children: "No navigation graph yet. Run a scan to discover links." }) }));
103
154
  }
104
- return (_jsxs("div", { className: fill ? 'flex h-full min-h-[400px] flex-col gap-2' : 'space-y-2', children: [_jsxs("div", { className: "flex flex-shrink-0 flex-wrap items-center gap-3 text-xs text-muted-foreground", children: [_jsxs("label", { className: "flex items-center gap-1", children: [_jsx("span", { children: "Route to" }), _jsxs("select", { className: "rounded border border-border bg-card px-2 py-1 text-foreground", value: selectedTargetPageId ?? '', onChange: event => onSelectTarget(event.target.value ? Number(event.target.value) : null), children: [_jsx("option", { value: "", children: "(none)" }), [...nodes]
105
- .sort((a, b) => a.relativePath.localeCompare(b.relativePath))
106
- .map(node => (_jsx("option", { value: node.pageId, children: node.relativePath }, node.pageId)))] })] }), _jsxs("label", { className: "flex items-center gap-1", children: [_jsx("input", { type: "checkbox", checked: showRemoved, onChange: event => onToggleRemoved(event.target.checked) }), _jsx("span", { children: "Show removed links" })] }), _jsxs("span", { children: ["Origin: ", originLabel] }), selectedTargetPageId != null && (_jsx("span", { children: route === null
107
- ? 'No known route to this page.'
108
- : `Route: ${route.length} hop${route.length === 1 ? '' : 's'}` })), unreachableCount > 0 && (_jsxs("span", { children: [unreachableCount, " page(s) not reachable from the origin."] })), droppedCount > 0 && (_jsxs("span", { children: [droppedCount, " page(s) not shown (limit ", MAX_GRAPH_NODES, ")."] }))] }), _jsx("div", { className: `w-full overflow-hidden rounded-lg border border-border ${fill ? 'min-h-0 flex-1' : 'h-[600px]'}`, children: _jsxs(ReactFlow, { nodes: rfNodes, edges: rfEdges, onNodesChange: onNodesChange, onEdgesChange: onEdgesChange, defaultViewport: { x: 40, y: 40, zoom: 0.7 }, minZoom: 0.1, className: "bg-muted", children: [_jsx(Background, {}), _jsx(Controls, {}), _jsx(MiniMap, {})] }) })] }));
155
+ return (_jsxs("div", { className: fill ? 'flex h-full min-h-[400px] flex-col gap-2' : 'space-y-2', children: [_jsxs("div", { className: "flex flex-shrink-0 flex-wrap items-center gap-3 text-xs text-muted-foreground", children: [_jsxs("label", { className: "flex items-center gap-1", children: [_jsx("span", { children: "Route to" }), _jsxs("select", { className: "rounded border border-border bg-card px-2 py-1 text-foreground", value: selectedTargetViewId ?? '', onChange: event => onSelectTarget(event.target.value ? Number(event.target.value) : null), children: [_jsx("option", { value: "", children: "(none)" }), [...views]
156
+ .sort((a, b) => a.urlPath.localeCompare(b.urlPath))
157
+ .map(view => (_jsx("option", { value: view.id, children: labelFor(view, (pathCounts.get(view.urlPath) ?? 0) > 1) }, view.id)))] })] }), _jsxs("label", { className: "flex items-center gap-1", children: [_jsx("input", { type: "checkbox", checked: showRemoved, onChange: event => onToggleRemoved(event.target.checked) }), _jsx("span", { children: "Show removed links" })] }), _jsxs("span", { children: ["Origin: ", originLabel] }), selectedTargetViewId != null && (_jsx("span", { children: route === null
158
+ ? 'No known route to this view.'
159
+ : `Route: ${route.length} hop${route.length === 1 ? '' : 's'}` })), unreachableCount > 0 && (_jsxs("span", { children: [unreachableCount, " view(s) not reachable from the origin."] })), droppedCount > 0 && (_jsxs("span", { children: [droppedCount, " view(s) not shown (limit ", MAX_GRAPH_NODES, ")."] }))] }), _jsx("div", { className: `w-full overflow-hidden rounded-lg border border-border ${fill ? 'min-h-0 flex-1' : 'h-[600px]'}`, children: _jsxs(ReactFlow, { nodes: rfNodes, edges: rfEdges, onNodesChange: onNodesChange, onEdgesChange: onEdgesChange, defaultViewport: { x: 40, y: 40, zoom: 0.7 }, minZoom: 0.1, className: "bg-muted", children: [_jsx(Background, {}), _jsx(Controls, {}), _jsx(MiniMap, {})] }) })] }));
109
160
  }
110
161
  //# sourceMappingURL=PagesGraphView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PagesGraphView.js","sourceRoot":"","sources":["../../../src/components/pages/PagesGraphView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EACL,SAAS,EACT,UAAU,EACV,QAAQ,EACR,OAAO,EACP,aAAa,EACb,aAAa,EAGb,UAAU,GACX,MAAM,eAAe,CAAC;AACvB,OAAO,8BAA8B,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnF,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,UAAU,GAAG,EAAE,CAAC;AActB,MAAM,OAAO,GAAG,CAAC,IAAyB,EAAE,EAAE,CAC5C,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AAE5E,MAAM,UAAU,cAAc,CAAC,EAC7B,KAAK,EACL,KAAK,EACL,KAAK,EACL,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,eAAe,EACf,YAAY,EACZ,IAAI,GACgB;IACpB,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;QAC5E,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,YAAY,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;QACrD,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAEzE,oEAAoE;QACpE,6CAA6C;QAC7C,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACvC,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC;YACvD,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC;YACvD,MAAM,EAAE,GAAG,EAAE,KAAK,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,MAAM,EAAE,GAAG,EAAE,KAAK,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,IAAI,EAAE,KAAK,EAAE;gBAAE,OAAO,EAAE,GAAG,EAAE,CAAC;YAC9B,OAAO,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAEvD,wEAAwE;QACxE,oDAAoD;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC;YAC9D,OAAO,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;QACrC,CAAC,EAAE,CAAC,CAAC,CAAC;QACN,MAAM,YAAY,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC;QAEpD,gEAAgE;QAChE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC9C,MAAM,UAAU,GAAW,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACzC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC;YAC9D,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACzC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,KAAK,oBAAoB,CAAC;YACtD,OAAO;gBACL,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;gBACvB,QAAQ,EAAE;oBACR,CAAC,EAAE,MAAM,KAAK,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,GAAG,YAAY;oBACvE,CAAC,EAAE,GAAG,GAAG,UAAU;iBACpB;gBACD,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE;gBAClC,SAAS,EAAE;oBACT,qCAAqC;oBACrC,QAAQ;wBACN,CAAC,CAAC,iDAAiD;wBACnD,CAAC,CAAC,uCAAuC;oBAC3C,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE;oBACrD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;iBACnC;qBACE,MAAM,CAAC,OAAO,CAAC;qBACf,IAAI,CAAC,GAAG,CAAC;aACb,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAC1B,IAAI,CAAC,EAAE,CACL,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC1B,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAC1C,CAAC;QACF,MAAM,IAAI,GAAW,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACtC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;YACvC,OAAO;gBACL,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC;gBACjB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC/B,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,SAAS;gBAC9B,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,WAAW,EAAE;gBAC3C,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE;oBACL,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5B,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACrD,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;iBAChF;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,SAAS,EAAE,UAAU;YACrB,SAAS,EAAE,IAAI;YACf,YAAY,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;YACxC,gBAAgB,EAAE,WAAW,CAAC,MAAM;SACrC,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;IAE3E,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IACtE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAEtE,2EAA2E;IAC3E,uEAAuE;IACvE,sEAAsE;IACtE,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,SAAS,CAAC,CAAC;QACtB,UAAU,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAEnD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE;QAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC;QAC/D,OAAO,KAAK,EAAE,YAAY,IAAI,cAAc,CAAC;IAC/C,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;IAE1B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CACL,cAAK,SAAS,EAAC,wCAAwC,YACrD,YAAG,SAAS,EAAC,uBAAuB,uEAEhC,GACA,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,WAAW,aAC7E,eAAK,SAAS,EAAC,+EAA+E,aAC5F,iBAAO,SAAS,EAAC,yBAAyB,aACxC,sCAAqB,EACrB,kBACE,SAAS,EAAC,gEAAgE,EAC1E,KAAK,EAAE,oBAAoB,IAAI,EAAE,EACjC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAChB,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAGxE,iBAAQ,KAAK,EAAC,EAAE,uBAAgB,EAC/B,CAAC,GAAG,KAAK,CAAC;yCACR,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;yCAC5D,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CACX,iBAA0B,KAAK,EAAE,IAAI,CAAC,MAAM,YACzC,IAAI,CAAC,YAAY,IADP,IAAI,CAAC,MAAM,CAEf,CACV,CAAC,IACG,IACH,EACR,iBAAO,SAAS,EAAC,yBAAyB,aACxC,gBACE,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GACxD,EACF,gDAA+B,IACzB,EACR,uCAAe,WAAW,IAAQ,EACjC,oBAAoB,IAAI,IAAI,IAAI,CAC/B,yBACG,KAAK,KAAK,IAAI;4BACb,CAAC,CAAC,8BAA8B;4BAChC,CAAC,CAAC,UAAU,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAC3D,CACR,EACA,gBAAgB,GAAG,CAAC,IAAI,CACvB,2BAAO,gBAAgB,+CAA+C,CACvE,EACA,YAAY,GAAG,CAAC,IAAI,CACnB,2BACG,YAAY,gCAA4B,eAAe,UACnD,CACR,IACG,EACN,cACE,SAAS,EAAE,0DACT,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAC5B,EAAE,YAEF,MAAC,SAAS,IACR,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAC5C,OAAO,EAAE,GAAG,EACZ,SAAS,EAAC,UAAU,aAEpB,KAAC,UAAU,KAAG,EACd,KAAC,QAAQ,KAAG,EACZ,KAAC,OAAO,KAAG,IACD,GACR,IACF,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"PagesGraphView.js","sourceRoot":"","sources":["../../../src/components/pages/PagesGraphView.tsx"],"names":[],"mappings":"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"}
@@ -1,23 +1,26 @@
1
1
  /** Cap on rendered nodes. Excess is dropped by distance and reported, never silently. */
2
2
  export declare const MAX_GRAPH_NODES = 300;
3
- /** Column marker for pages with no path from the origin. */
3
+ /** Column marker for views with no path from the origin. */
4
4
  export declare const UNREACHABLE_COLUMN = -1;
5
5
  export interface LayoutInput {
6
- pageId: number;
6
+ id: number;
7
7
  }
8
8
  export interface LayoutEdge {
9
- fromPageId: number;
10
- toPageId: number;
9
+ fromViewId: number;
10
+ toViewId: number | null;
11
11
  }
12
12
  /**
13
- * Assign each page a column by BFS depth from the origin over LIVE edges.
13
+ * Assign each view a column by BFS depth from the origin over LIVE transitions.
14
14
  *
15
- * Reachability is a DAG, not a tree, so shortest depth wins when a page is
16
- * reachable several ways. Pages with no path land in UNREACHABLE_COLUMN rather
15
+ * Reachability is a DAG, not a tree, so shortest depth wins when a view is
16
+ * reachable several ways. Views with no path land in UNREACHABLE_COLUMN rather
17
17
  * than being dropped — the scan bootstraps by navigating directly to many
18
- * paths, so unreached pages are expected and worth showing.
18
+ * paths, so unreached views are expected and worth showing.
19
+ *
20
+ * Transitions with a null `toViewId` are skipped: they point at a path whose
21
+ * view has not been observed yet, so there is nothing to lay out.
19
22
  */
20
- export declare function assignColumns(nodes: LayoutInput[], liveEdges: LayoutEdge[], originPageId: number): {
23
+ export declare function assignColumns(nodes: LayoutInput[], liveEdges: LayoutEdge[], originViewId: number): {
21
24
  columns: Map<number, number>;
22
25
  unreachable: number[];
23
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"graphLayout.d.ts","sourceRoot":"","sources":["../../../src/components/pages/graphLayout.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,4DAA4D;AAC5D,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,WAAW,EAAE,EACpB,SAAS,EAAE,UAAU,EAAE,EACvB,YAAY,EAAE,MAAM,GACnB;IAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,CAqCzD"}
1
+ {"version":3,"file":"graphLayout.d.ts","sourceRoot":"","sources":["../../../src/components/pages/graphLayout.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,4DAA4D;AAC5D,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,WAAW,EAAE,EACpB,SAAS,EAAE,UAAU,EAAE,EACvB,YAAY,EAAE,MAAM,GACnB;IAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,CAsCzD"}
@@ -1,35 +1,40 @@
1
1
  /** Cap on rendered nodes. Excess is dropped by distance and reported, never silently. */
2
2
  export const MAX_GRAPH_NODES = 300;
3
- /** Column marker for pages with no path from the origin. */
3
+ /** Column marker for views with no path from the origin. */
4
4
  export const UNREACHABLE_COLUMN = -1;
5
5
  /**
6
- * Assign each page a column by BFS depth from the origin over LIVE edges.
6
+ * Assign each view a column by BFS depth from the origin over LIVE transitions.
7
7
  *
8
- * Reachability is a DAG, not a tree, so shortest depth wins when a page is
9
- * reachable several ways. Pages with no path land in UNREACHABLE_COLUMN rather
8
+ * Reachability is a DAG, not a tree, so shortest depth wins when a view is
9
+ * reachable several ways. Views with no path land in UNREACHABLE_COLUMN rather
10
10
  * than being dropped — the scan bootstraps by navigating directly to many
11
- * paths, so unreached pages are expected and worth showing.
11
+ * paths, so unreached views are expected and worth showing.
12
+ *
13
+ * Transitions with a null `toViewId` are skipped: they point at a path whose
14
+ * view has not been observed yet, so there is nothing to lay out.
12
15
  */
13
- export function assignColumns(nodes, liveEdges, originPageId) {
14
- const known = new Set(nodes.map(node => node.pageId));
16
+ export function assignColumns(nodes, liveEdges, originViewId) {
17
+ const known = new Set(nodes.map(node => node.id));
15
18
  const outgoing = new Map();
16
19
  for (const edge of liveEdges) {
17
- if (!known.has(edge.fromPageId) || !known.has(edge.toPageId))
20
+ if (edge.toViewId == null)
21
+ continue;
22
+ if (!known.has(edge.fromViewId) || !known.has(edge.toViewId))
18
23
  continue;
19
- const list = outgoing.get(edge.fromPageId) ?? [];
20
- list.push(edge.toPageId);
21
- outgoing.set(edge.fromPageId, list);
24
+ const list = outgoing.get(edge.fromViewId) ?? [];
25
+ list.push(edge.toViewId);
26
+ outgoing.set(edge.fromViewId, list);
22
27
  }
23
28
  const columns = new Map();
24
- if (known.has(originPageId)) {
25
- columns.set(originPageId, 0);
26
- let frontier = [originPageId];
29
+ if (known.has(originViewId)) {
30
+ columns.set(originViewId, 0);
31
+ let frontier = [originViewId];
27
32
  let depth = 0;
28
33
  while (frontier.length > 0) {
29
34
  depth += 1;
30
35
  const next = [];
31
- for (const pageId of frontier) {
32
- for (const target of outgoing.get(pageId) ?? []) {
36
+ for (const viewId of frontier) {
37
+ for (const target of outgoing.get(viewId) ?? []) {
33
38
  if (columns.has(target))
34
39
  continue;
35
40
  columns.set(target, depth);
@@ -41,9 +46,9 @@ export function assignColumns(nodes, liveEdges, originPageId) {
41
46
  }
42
47
  const unreachable = [];
43
48
  for (const node of nodes) {
44
- if (!columns.has(node.pageId)) {
45
- columns.set(node.pageId, UNREACHABLE_COLUMN);
46
- unreachable.push(node.pageId);
49
+ if (!columns.has(node.id)) {
50
+ columns.set(node.id, UNREACHABLE_COLUMN);
51
+ unreachable.push(node.id);
47
52
  }
48
53
  }
49
54
  return { columns, unreachable };
@@ -1 +1 @@
1
- {"version":3,"file":"graphLayout.js","sourceRoot":"","sources":["../../../src/components/pages/graphLayout.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AAEnC,4DAA4D;AAC5D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,CAAC;AAWrC;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAoB,EACpB,SAAuB,EACvB,YAAoB;IAEpB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,SAAS;QACvE,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,IAAI,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAC7B,IAAI,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC;QAC9B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,KAAK,IAAI,CAAC,CAAC;YACX,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;gBAC9B,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;oBAChD,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;wBAAE,SAAS;oBAClC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;YACD,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;YAC7C,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"graphLayout.js","sourceRoot":"","sources":["../../../src/components/pages/graphLayout.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AAEnC,4DAA4D;AAC5D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,CAAC;AAWrC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAoB,EACpB,SAAuB,EACvB,YAAoB;IAEpB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI;YAAE,SAAS;QACpC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,SAAS;QACvE,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,IAAI,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAC7B,IAAI,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC;QAC9B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,KAAK,IAAI,CAAC,CAAC;YACX,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;gBAC9B,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;oBAChD,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;wBAAE,SAAS;oBAClC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;YACD,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;YACzC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AAClC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"PagesPage.d.ts","sourceRoot":"","sources":["../../src/pages/PagesPage.tsx"],"names":[],"mappings":"AAiBA,wBAAgB,SAAS,gCAsNxB"}
1
+ {"version":3,"file":"PagesPage.d.ts","sourceRoot":"","sources":["../../src/pages/PagesPage.tsx"],"names":[],"mappings":"AAiBA,wBAAgB,SAAS,gCAmOxB"}
@@ -11,7 +11,7 @@ export function PagesPage() {
11
11
  const { entitySlug, envId, runId } = useRouteParams();
12
12
  const { networkClient, token, baseUrl } = useTestomniacApi();
13
13
  const [view, setView] = useState('list');
14
- const [targetPageId, setTargetPageId] = useState(null);
14
+ const [targetViewId, setTargetViewId] = useState(null);
15
15
  const [showRemoved, setShowRemoved] = useState(false);
16
16
  const runScoped = Boolean(runId);
17
17
  const environmentPagesQuery = useEnvironmentPages(networkClient, baseUrl, token ?? '', Number(envId), { enabled: !!envId && !!token && !runScoped });
@@ -42,15 +42,23 @@ export function PagesPage() {
42
42
  const primaryRunnerId = pages.length > 0 ? pages[0].runnerId : 0;
43
43
  const pageStatesQuery = useRunnerPageStates(networkClient, baseUrl, token ?? '', primaryRunnerId, { enabled: !!primaryRunnerId && !!token });
44
44
  const pageStates = useMemo(() => pageStatesQuery.data?.data ?? [], [pageStatesQuery.data]);
45
- // Graph mode is runner-scoped by design: edges belong to a runner, not a run.
46
- const graphQuery = useNavigationGraph(networkClient, baseUrl, token ?? '', primaryRunnerId, {
47
- enabled: !!primaryRunnerId && !!token && view === 'graph',
45
+ // Graph mode is environment-scoped: base_url lives on the environment and
46
+ // determines which deployed site a graph describes, so staging and
47
+ // production never share one.
48
+ const graphQuery = useNavigationGraph(networkClient, baseUrl, token ?? '', Number(envId), {
49
+ enabled: !!envId && !!token && view === 'graph',
48
50
  });
49
- const routeQuery = useRoute(networkClient, baseUrl, token ?? '', primaryRunnerId, targetPageId ?? 0, {
50
- enabled: !!primaryRunnerId && !!token && !!targetPageId && view === 'graph',
51
+ const graph = graphQuery.data ?? null;
52
+ // Route targets are addressed by path: the graph is keyed on views, and
53
+ // several views can share a path.
54
+ const targetView = useMemo(() => graph?.views.find(v => v.id === targetViewId) ?? null, [graph, targetViewId]);
55
+ const routeQuery = useRoute(networkClient, baseUrl, token ?? '', Number(envId), {
56
+ urlPath: targetView?.urlPath ?? '',
57
+ signature: targetView?.signature,
58
+ }, undefined, {
59
+ enabled: !!envId && !!token && !!targetView && view === 'graph',
51
60
  });
52
- const graph = graphQuery.data?.data ?? null;
53
- const routeHops = targetPageId ? (routeQuery.data?.data?.route ?? null) : null;
61
+ const routeHops = targetView ? (routeQuery.data?.route ?? null) : null;
54
62
  const screenshotsByPageId = useMemo(() => {
55
63
  const map = new Map();
56
64
  for (const ps of pageStates) {
@@ -72,6 +80,6 @@ export function PagesPage() {
72
80
  ? 'bg-foreground text-background'
73
81
  : 'text-muted-foreground hover:text-foreground'}`, children: "Map" }), _jsx("button", { onClick: () => setView('graph'), className: `px-4 py-1.5 text-sm font-medium transition-colors ${view === 'graph'
74
82
  ? 'bg-foreground text-background'
75
- : 'text-muted-foreground hover:text-foreground'} rounded-r-md`, children: "Graph" })] })] })] }), children: pages.length === 0 ? (_jsx("div", { className: "px-4 py-4 sm:px-6", children: _jsx("p", { className: "text-muted-foreground", children: "No pages discovered yet." }) })) : view === 'list' ? (_jsx("div", { className: "px-4 py-4 sm:px-6", children: _jsx(PagesListView, { pages: pages, envId: envId, entitySlug: entitySlug, runId: runId, screenshotsByPageId: screenshotsByPageId, apiUrl: baseUrl }) })) : view === 'graph' ? (_jsx("div", { className: "h-full min-h-0 p-4 sm:p-6", children: graphQuery.isLoading ? (_jsx("div", { className: "py-8 text-center text-muted-foreground", children: "Loading graph..." })) : graphQuery.error ? (_jsxs("div", { className: "py-8 text-center text-destructive", children: ["Error: ", graphQuery.error.message] })) : (_jsx(PagesGraphView, { nodes: graph?.nodes ?? [], edges: graph?.edges ?? [], route: routeHops, selectedTargetPageId: targetPageId, onSelectTarget: setTargetPageId, showRemoved: showRemoved, onToggleRemoved: setShowRemoved, originPageId: routeQuery.data?.data?.originPageId ?? null, fill: true })) })) : (_jsx("div", { className: "h-full min-h-0 p-4 sm:p-6", children: _jsx(PagesMapView, { pages: pages, testInteractions: testInteractions, envId: envId, entitySlug: entitySlug, runId: runId, screenshotsByPageId: screenshotsByPageId, apiUrl: baseUrl, fill: true }) })) }));
83
+ : 'text-muted-foreground hover:text-foreground'} rounded-r-md`, children: "Graph" })] })] })] }), children: pages.length === 0 ? (_jsx("div", { className: "px-4 py-4 sm:px-6", children: _jsx("p", { className: "text-muted-foreground", children: "No pages discovered yet." }) })) : view === 'list' ? (_jsx("div", { className: "px-4 py-4 sm:px-6", children: _jsx(PagesListView, { pages: pages, envId: envId, entitySlug: entitySlug, runId: runId, screenshotsByPageId: screenshotsByPageId, apiUrl: baseUrl }) })) : view === 'graph' ? (_jsx("div", { className: "h-full min-h-0 p-4 sm:p-6", children: graphQuery.isLoading ? (_jsx("div", { className: "py-8 text-center text-muted-foreground", children: "Loading graph..." })) : graphQuery.error ? (_jsxs("div", { className: "py-8 text-center text-destructive", children: ["Error: ", graphQuery.error.message] })) : (_jsx(PagesGraphView, { views: graph?.views ?? [], transitions: graph?.transitions ?? [], route: routeHops, selectedTargetViewId: targetViewId, onSelectTarget: setTargetViewId, showRemoved: showRemoved, onToggleRemoved: setShowRemoved, originViewId: routeHops?.[0]?.fromViewId ?? null, fill: true })) })) : (_jsx("div", { className: "h-full min-h-0 p-4 sm:p-6", children: _jsx(PagesMapView, { pages: pages, testInteractions: testInteractions, envId: envId, entitySlug: entitySlug, runId: runId, screenshotsByPageId: screenshotsByPageId, apiUrl: baseUrl, fill: true }) })) }));
76
84
  }
77
85
  //# sourceMappingURL=PagesPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PagesPage.js","sourceRoot":"","sources":["../../src/pages/PagesPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAC9B,kBAAkB,EAClB,QAAQ,EACR,WAAW,EACX,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEpE,MAAM,UAAU,SAAS;IACvB,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,cAAc,EAI/C,CAAC;IACL,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC7D,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAA2B,MAAM,CAAC,CAAC;IACnE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACtE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEtD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAEjC,MAAM,qBAAqB,GAAG,mBAAmB,CAC/C,aAAa,EACb,OAAO,EACP,KAAK,IAAI,EAAE,EACX,MAAM,CAAC,KAAK,CAAC,EACb,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,CAC9C,CAAC;IAEF,MAAM,aAAa,GAAG,WAAW,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;QACpF,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK;KAC5B,CAAC,CAAC;IAEH,MAAM,wBAAwB,GAAG,8BAA8B,CAC7D,aAAa,EACb,OAAO,EACP,KAAK,IAAI,EAAE,EACX,MAAM,CAAC,KAAK,CAAC,EACb,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,CAC9C,CAAC;IAEF,MAAM,gBAAgB,GAAG,sBAAsB,CAC7C,aAAa,EACb,OAAO,EACP,KAAK,IAAI,EAAE,EACX,MAAM,CAAC,KAAK,CAAC,EACb,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,CAChC,CAAC;IAEF,MAAM,KAAK,GAAG,SAAS;QACrB,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,gBAAgB,GAAG,SAAS;QAChC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;QACrC,CAAC,CAAC,CAAC,wBAAwB,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC;IAC3F,MAAM,eAAe,GAAG,SAAS;QAC/B,CAAC,CAAC,gBAAgB,CAAC,SAAS;QAC5B,CAAC,CAAC,wBAAwB,CAAC,SAAS,CAAC;IACvC,MAAM,UAAU,GAAG,SAAS;QAC1B,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC;QACxC,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC;IACnD,MAAM,aAAa,GAAG,SAAS;QAC7B,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC;QAC3C,CAAC,CAAC,CAAC,wBAAwB,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC;IAEtD,MAAM,SAAS,GAAG,YAAY,IAAI,eAAe,CAAC;IAClD,MAAM,KAAK,GAAG,UAAU,IAAI,aAAa,CAAC;IAE1C,2EAA2E;IAC3E,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,eAAe,GAAG,mBAAmB,CACzC,aAAa,EACb,OAAO,EACP,KAAK,IAAI,EAAE,EACX,eAAe,EACf,EAAE,OAAO,EAAE,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,KAAK,EAAE,CAC1C,CAAC;IACF,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3F,8EAA8E;IAC9E,MAAM,UAAU,GAAG,kBAAkB,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,EAAE,eAAe,EAAE;QAC1F,OAAO,EAAE,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,OAAO;KAC1D,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,QAAQ,CACzB,aAAa,EACb,OAAO,EACP,KAAK,IAAI,EAAE,EACX,eAAe,EACf,YAAY,IAAI,CAAC,EACjB;QACE,OAAO,EAAE,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,YAAY,IAAI,IAAI,KAAK,OAAO;KAC5E,CACF,CAAC;IACF,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC;IAC5C,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE/E,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,EAAE;QACvC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;QACtC,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;YAC5B,IAAI,EAAE,CAAC,cAAc,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7C,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CACL,cAAK,SAAS,EAAC,YAAY,YACzB,cAAK,SAAS,EAAC,wCAAwC,2BAAiB,GACpE,CACP,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CACL,cAAK,SAAS,EAAC,YAAY,YACzB,eAAK,SAAS,EAAC,mCAAmC,wBAAS,KAAK,IAAO,GACnE,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,aAAa,IACZ,gBAAgB,EAAC,SAAS,EAC1B,MAAM,EACJ,eAAK,SAAS,EAAC,+DAA+D,aAC5E,KAAC,OAAO,IAAC,KAAK,EAAC,kBAAkB,EAAC,WAAW,EAAC,EAAE,EAAC,OAAO,SAAG,EAC3D,eAAK,SAAS,EAAC,oEAAoE,aACjF,aAAI,SAAS,EAAC,oCAAoC,YAC/C,SAAS,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,kBAAkB,GACpD,EACL,eAAK,SAAS,EAAC,sCAAsC,aACnD,iBACE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAC9B,SAAS,EAAE,qDACT,IAAI,KAAK,MAAM;wCACb,CAAC,CAAC,+BAA+B;wCACjC,CAAC,CAAC,6CACN,eAAe,qBAGR,EACT,iBACE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAC7B,SAAS,EAAE,qDACT,IAAI,KAAK,KAAK;wCACZ,CAAC,CAAC,+BAA+B;wCACjC,CAAC,CAAC,6CACN,EAAE,oBAGK,EACT,iBACE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAC/B,SAAS,EAAE,qDACT,IAAI,KAAK,OAAO;wCACd,CAAC,CAAC,+BAA+B;wCACjC,CAAC,CAAC,6CACN,eAAe,sBAGR,IACL,IACF,IACF,YAGP,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACpB,cAAK,SAAS,EAAC,mBAAmB,YAChC,YAAG,SAAS,EAAC,uBAAuB,yCAA6B,GAC7D,CACP,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CACpB,cAAK,SAAS,EAAC,mBAAmB,YAChC,KAAC,aAAa,IACZ,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAM,EACb,UAAU,EAAE,UAAW,EACvB,KAAK,EAAE,KAAK,EACZ,mBAAmB,EAAE,mBAAmB,EACxC,MAAM,EAAE,OAAO,GACf,GACE,CACP,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CACrB,cAAK,SAAS,EAAC,2BAA2B,YACvC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CACtB,cAAK,SAAS,EAAC,wCAAwC,iCAAuB,CAC/E,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CACrB,eAAK,SAAS,EAAC,mCAAmC,wBACxC,UAAU,CAAC,KAAK,CAAC,OAAO,IAC5B,CACP,CAAC,CAAC,CAAC,CACF,KAAC,cAAc,IACb,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,EACzB,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,EACzB,KAAK,EAAE,SAAS,EAChB,oBAAoB,EAAE,YAAY,EAClC,cAAc,EAAE,eAAe,EAC/B,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,cAAc,EAC/B,YAAY,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,IAAI,IAAI,EACzD,IAAI,SACJ,CACH,GACG,CACP,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,2BAA2B,YACxC,KAAC,YAAY,IACX,KAAK,EAAE,KAAK,EACZ,gBAAgB,EAAE,gBAAgB,EAClC,KAAK,EAAE,KAAM,EACb,UAAU,EAAE,UAAW,EACvB,KAAK,EAAE,KAAK,EACZ,mBAAmB,EAAE,mBAAmB,EACxC,MAAM,EAAE,OAAO,EACf,IAAI,SACJ,GACE,CACP,GACa,CACjB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"PagesPage.js","sourceRoot":"","sources":["../../src/pages/PagesPage.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sudobility/testomniac_ui",
3
- "version": "0.0.35",
3
+ "version": "0.0.36",
4
4
  "description": "Shared dashboard UI components, pages, and hooks for Testomniac apps (router/i18n-agnostic)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -29,7 +29,7 @@
29
29
  "@heroicons/react": ">=2.0.0",
30
30
  "@sudobility/components": "^5.0.98",
31
31
  "@sudobility/design": "^1.1.46",
32
- "@sudobility/testomniac_client": "^0.0.114",
32
+ "@sudobility/testomniac_client": "^0.0.115",
33
33
  "@sudobility/testomniac_lib": "^0.0.124",
34
34
  "@sudobility/testomniac_types": "^0.0.88",
35
35
  "@sudobility/types": "^1.9.62",
@@ -44,7 +44,7 @@
44
44
  "@heroicons/react": "^2.2.0",
45
45
  "@sudobility/components": "^5.0.98",
46
46
  "@sudobility/design": "^1.1.46",
47
- "@sudobility/testomniac_client": "^0.0.114",
47
+ "@sudobility/testomniac_client": "^0.0.115",
48
48
  "@sudobility/testomniac_lib": "^0.0.124",
49
49
  "@sudobility/testomniac_types": "^0.0.88",
50
50
  "@sudobility/types": "^1.9.62",