@graph-artifact/core 0.1.2 → 0.1.3
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,8 +1,11 @@
|
|
|
1
1
|
import type { ParsedDiagram, NodeMetadata } from '../types.js';
|
|
2
|
+
import type { GraphConfig } from '../config.js';
|
|
2
3
|
interface DiagramCanvasProps {
|
|
3
4
|
parsed: ParsedDiagram;
|
|
4
5
|
metadata?: Record<string, NodeMetadata>;
|
|
5
6
|
onNodeClick: (nodeId: string, nodeLabel: string) => void;
|
|
7
|
+
canvasOverrides?: Partial<GraphConfig['canvas']>;
|
|
8
|
+
hideAttribution?: boolean;
|
|
6
9
|
}
|
|
7
|
-
export declare function DiagramCanvas({ parsed, metadata, onNodeClick }: DiagramCanvasProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export declare function DiagramCanvas({ parsed, metadata, onNodeClick, canvasOverrides, hideAttribution }: DiagramCanvasProps): import("react/jsx-runtime").JSX.Element;
|
|
8
11
|
export {};
|
|
@@ -11,9 +11,9 @@ function UnsupportedCustomDiagram({ parsed }) {
|
|
|
11
11
|
fontSize: 14,
|
|
12
12
|
}, children: `Diagram type '${parsed.diagramType}' is detected but custom rendering is not implemented yet.` }));
|
|
13
13
|
}
|
|
14
|
-
export function DiagramCanvas({ parsed, metadata, onNodeClick }) {
|
|
14
|
+
export function DiagramCanvas({ parsed, metadata, onNodeClick, canvasOverrides, hideAttribution }) {
|
|
15
15
|
if (parsed.kind === 'graph') {
|
|
16
|
-
return _jsx(GraphCanvas, { parsed: parsed, metadata: metadata, onNodeClick: onNodeClick });
|
|
16
|
+
return (_jsx(GraphCanvas, { parsed: parsed, metadata: metadata, onNodeClick: onNodeClick, canvasOverrides: canvasOverrides, hideAttribution: hideAttribution }));
|
|
17
17
|
}
|
|
18
18
|
return _jsx(UnsupportedCustomDiagram, { parsed: parsed });
|
|
19
19
|
}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import '@xyflow/react/dist/style.css';
|
|
2
2
|
import type { ParsedGraph, NodeMetadata } from '../types.js';
|
|
3
|
+
import type { GraphConfig } from '../config.js';
|
|
3
4
|
interface GraphCanvasProps {
|
|
4
5
|
parsed: ParsedGraph;
|
|
5
6
|
metadata?: Record<string, NodeMetadata>;
|
|
6
7
|
onNodeClick: (nodeId: string, nodeLabel: string) => void;
|
|
8
|
+
canvasOverrides?: Partial<GraphConfig['canvas']>;
|
|
9
|
+
hideAttribution?: boolean;
|
|
7
10
|
}
|
|
8
11
|
export declare function GraphCanvas(props: GraphCanvasProps): import("react/jsx-runtime").JSX.Element;
|
|
9
12
|
export {};
|
|
@@ -8,9 +8,10 @@ import { useTheme } from '../ThemeContext.js';
|
|
|
8
8
|
import { RoutedEdge } from './edges/RoutedEdge.js';
|
|
9
9
|
// Stable reference — must be outside the component to avoid infinite re-renders
|
|
10
10
|
const edgeTypes = { routed: RoutedEdge };
|
|
11
|
-
function GraphCanvasInner({ parsed, metadata, onNodeClick }) {
|
|
11
|
+
function GraphCanvasInner({ parsed, metadata, onNodeClick, canvasOverrides, hideAttribution }) {
|
|
12
12
|
const theme = useTheme();
|
|
13
|
-
const { canvas } = getConfig();
|
|
13
|
+
const { canvas: baseCanvas } = getConfig();
|
|
14
|
+
const canvas = useMemo(() => ({ ...baseCanvas, ...(canvasOverrides ?? {}) }), [baseCanvas, canvasOverrides]);
|
|
14
15
|
const resolvedNodeTypes = getNodeTypes();
|
|
15
16
|
const storeApi = useStoreApi();
|
|
16
17
|
const nodesInitialized = useNodesInitialized();
|
|
@@ -97,7 +98,7 @@ function GraphCanvasInner({ parsed, metadata, onNodeClick }) {
|
|
|
97
98
|
textAlign: 'center',
|
|
98
99
|
}, children: `Diagram syntax/layout error: ${layoutState.error ?? 'Unknown layout failure'}` }));
|
|
99
100
|
}
|
|
100
|
-
return (_jsx("div", { style: { width: '100%', height: '100%' }, children: _jsxs(ReactFlow, { nodes: nodes, edges: edges, nodeTypes: resolvedNodeTypes, edgeTypes: edgeTypes, onNodeClick: handleNodeClick, fitView: canvas.fitView, minZoom: canvas.minZoom, maxZoom: canvas.maxZoom, defaultEdgeOptions: defaultEdgeOptions, children: [canvas.showBackground && (_jsx(Background, { color: theme.color.gray2, gap: canvas.backgroundGap, size: canvas.backgroundSize })), canvas.showControls && _jsx(Controls, {}), canvas.showMiniMap && (_jsx(MiniMap, { nodeColor: miniMapNodeColor, maskColor: miniMapMaskColor }))] }) }));
|
|
101
|
+
return (_jsx("div", { style: { width: '100%', height: '100%' }, children: _jsxs(ReactFlow, { nodes: nodes, edges: edges, nodeTypes: resolvedNodeTypes, edgeTypes: edgeTypes, onNodeClick: handleNodeClick, fitView: canvas.fitView, minZoom: canvas.minZoom, maxZoom: canvas.maxZoom, defaultEdgeOptions: defaultEdgeOptions, proOptions: hideAttribution ? { hideAttribution: true } : undefined, children: [canvas.showBackground && (_jsx(Background, { color: theme.color.gray2, gap: canvas.backgroundGap, size: canvas.backgroundSize })), canvas.showControls && _jsx(Controls, {}), canvas.showMiniMap && (_jsx(MiniMap, { nodeColor: miniMapNodeColor, maskColor: miniMapMaskColor }))] }) }));
|
|
101
102
|
}
|
|
102
103
|
export function GraphCanvas(props) {
|
|
103
104
|
return (_jsx(ReactFlowProvider, { children: _jsx(GraphCanvasInner, { ...props }) }));
|