@seed-ship/mcp-ui-solid 6.8.2 → 6.9.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/CHANGELOG.md +34 -0
- package/dist/components/ChartJSRenderer.cjs +27 -13
- package/dist/components/ChartJSRenderer.cjs.map +1 -1
- package/dist/components/ChartJSRenderer.d.ts.map +1 -1
- package/dist/components/ChartJSRenderer.js +28 -14
- package/dist/components/ChartJSRenderer.js.map +1 -1
- package/dist/components/DegradedFallback.cjs +73 -0
- package/dist/components/DegradedFallback.cjs.map +1 -0
- package/dist/components/DegradedFallback.d.ts +37 -0
- package/dist/components/DegradedFallback.d.ts.map +1 -0
- package/dist/components/DegradedFallback.js +73 -0
- package/dist/components/DegradedFallback.js.map +1 -0
- package/dist/components/GraphRenderer.cjs +30 -15
- package/dist/components/GraphRenderer.cjs.map +1 -1
- package/dist/components/GraphRenderer.d.ts.map +1 -1
- package/dist/components/GraphRenderer.js +31 -16
- package/dist/components/GraphRenderer.js.map +1 -1
- package/dist/components/MapRenderer.cjs +128 -107
- package/dist/components/MapRenderer.cjs.map +1 -1
- package/dist/components/MapRenderer.d.ts.map +1 -1
- package/dist/components/MapRenderer.js +129 -108
- package/dist/components/MapRenderer.js.map +1 -1
- package/dist/index.cjs +4 -4
- package/dist/index.js +1 -1
- package/dist/utils/degraded-projections.cjs +87 -0
- package/dist/utils/degraded-projections.cjs.map +1 -0
- package/dist/utils/degraded-projections.d.ts +64 -0
- package/dist/utils/degraded-projections.d.ts.map +1 -0
- package/dist/utils/degraded-projections.js +87 -0
- package/dist/utils/degraded-projections.js.map +1 -0
- package/package.json +1 -1
- package/src/components/ChartJSRenderer.tsx +94 -85
- package/src/components/DegradedFallback.test.tsx +61 -0
- package/src/components/DegradedFallback.tsx +93 -0
- package/src/components/GraphRenderer.tsx +26 -4
- package/src/components/MapRenderer.tsx +446 -392
- package/src/utils/degraded-projections.test.ts +113 -0
- package/src/utils/degraded-projections.ts +149 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -28,6 +28,9 @@ import type {
|
|
|
28
28
|
} from '@seed-ship/mcp-ui-spec';
|
|
29
29
|
import { ExpandableWrapper, useExpanded } from './ExpandableWrapper';
|
|
30
30
|
import { PortalDropdownMenu } from './PortalDropdownMenu';
|
|
31
|
+
import { DegradedFallback } from './DegradedFallback';
|
|
32
|
+
import { graphToDegradedTable } from '../utils/degraded-projections';
|
|
33
|
+
import { useTelemetry } from '../context/MCPUITelemetryContext';
|
|
31
34
|
|
|
32
35
|
// Module-scoped lazy import promise — first call triggers the dynamic
|
|
33
36
|
// import, subsequent calls reuse the resolved module.
|
|
@@ -220,6 +223,7 @@ export interface GraphRendererProps {
|
|
|
220
223
|
export const GraphRenderer: Component<GraphRendererProps> = (props) => {
|
|
221
224
|
const params = () => props.component.params as GraphComponentParams;
|
|
222
225
|
const isExpanded = useExpanded();
|
|
226
|
+
const telemetry = useTelemetry();
|
|
223
227
|
const [available, setAvailable] = createSignal<boolean | null>(null);
|
|
224
228
|
const [error, setError] = createSignal<string | undefined>();
|
|
225
229
|
const [exportMenuOpen, setExportMenuOpen] = createSignal(false);
|
|
@@ -293,7 +297,18 @@ export const GraphRenderer: Component<GraphRendererProps> = (props) => {
|
|
|
293
297
|
graphInstance = new (Graph as any)(config);
|
|
294
298
|
await graphInstance.render();
|
|
295
299
|
} catch (err) {
|
|
296
|
-
|
|
300
|
+
const message = err instanceof Error ? err.message : 'Failed to render graph';
|
|
301
|
+
setError(message);
|
|
302
|
+
// Fallback ladder (P2.5): the native G6 render threw — emit telemetry
|
|
303
|
+
// so the failure is observable, then degrade to the edge/node table
|
|
304
|
+
// below instead of leaving a blank canvas.
|
|
305
|
+
telemetry?.dispatch({
|
|
306
|
+
type: 'render:error',
|
|
307
|
+
errorMessage: message,
|
|
308
|
+
id: props.component.id ?? '',
|
|
309
|
+
componentType: 'graph',
|
|
310
|
+
ts: Date.now(),
|
|
311
|
+
});
|
|
297
312
|
}
|
|
298
313
|
});
|
|
299
314
|
|
|
@@ -424,19 +439,26 @@ export const GraphRenderer: Component<GraphRendererProps> = (props) => {
|
|
|
424
439
|
</PortalDropdownMenu>
|
|
425
440
|
</div>
|
|
426
441
|
|
|
442
|
+
{/* Native G6 canvas — hidden once a render error degrades us. */}
|
|
427
443
|
<div
|
|
428
444
|
ref={containerRef}
|
|
429
445
|
class={`bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden ${
|
|
430
|
-
|
|
431
|
-
}`}
|
|
446
|
+
error() ? 'hidden' : ''
|
|
447
|
+
} ${isExpanded() ? 'flex-1 min-h-0' : ''}`}
|
|
432
448
|
style={
|
|
433
449
|
isExpanded()
|
|
434
450
|
? `height: 100%; width: ${params().width ?? '100%'};`
|
|
435
451
|
: `height: ${params().height ?? '400px'}; width: ${params().width ?? '100%'};`
|
|
436
452
|
}
|
|
437
453
|
/>
|
|
454
|
+
{/* Fallback ladder (P2.5): degrade to an edge/node table on error
|
|
455
|
+
rather than showing a bare message. Export menu stays usable. */}
|
|
438
456
|
<Show when={error()}>
|
|
439
|
-
<
|
|
457
|
+
<DegradedFallback
|
|
458
|
+
message={`Graph rendering failed: ${error()}`}
|
|
459
|
+
caption="Showing the graph data as a table — the interactive view is unavailable."
|
|
460
|
+
{...graphToDegradedTable(params())}
|
|
461
|
+
/>
|
|
440
462
|
</Show>
|
|
441
463
|
</div>
|
|
442
464
|
</ExpandableWrapper>
|