diff --git a/inspector/src/main.tsx b/inspector/src/main.tsx index 7ce4cca..fc6f868 100644 --- a/inspector/src/main.tsx +++ b/inspector/src/main.tsx @@ -10,6 +10,8 @@ type Selection = { record: number; }; +type NodeArticle = NonNullable[0]["nodeArticle"]>; + type RawSelection = | { kind: "record"; index: number } | { kind: "value"; recordIndex: number; path: string; value: unknown }; @@ -273,41 +275,6 @@ function InspectionView({ setSelection: (selection: Selection) => void; onInspectFile: (file: File) => Promise; }) { - const expandedRawSelection = graphSelection?.kind === "node" - ? graphProjection.nodeSelections.get(graphSelection.nodeId) - : graphSelection?.kind === "edge" - ? graphProjection.edgeSelections.get(graphSelection.edgeId) - : undefined; - const expandedRecord = expandedRawSelection?.kind === "record" - ? inspection.records[expandedRawSelection.index] - : expandedRawSelection?.kind === "value" - ? inspection.records[expandedRawSelection.recordIndex] - : undefined; - const expandedValue = expandedRawSelection?.kind === "value" - ? { - path: expandedRawSelection.path, - value: expandedRawSelection.value, - } - : undefined; - const expandedCatalogEntry = expandedRecord - ? inspection.catalog.find((entry) => entry.schemaId === expandedRecord.schemaId) - : undefined; - const expandedNode = graphSelection?.kind === "node" - ? { - graphKey: graphSelection.graphKey, - nodeId: graphSelection.nodeId, - className: "huginn-expanded-node", - ariaLabel: "Selected CultCache node", - content: ( - - ), - } - : undefined; const selectRaw = (next: Extract) => { setSelection({ record: next.index }); setGraphSelection({ @@ -338,6 +305,35 @@ function InspectionView({ return; } }; + const nodeArticle: NodeArticle = { + className: "huginn-expanded-node", + ariaLabel: (node) => `${node.title} CultCache detail`, + content: (node) => { + const rawSelection = graphProjection.nodeSelections.get(node.id); + const record = rawSelection?.kind === "record" + ? inspection.records[rawSelection.index] + : rawSelection?.kind === "value" + ? inspection.records[rawSelection.recordIndex] + : undefined; + const expandedValue = rawSelection?.kind === "value" + ? { + path: rawSelection.path, + value: rawSelection.value, + } + : undefined; + const catalogEntry = record + ? inspection.catalog.find((entry) => entry.schemaId === record.schemaId) + : undefined; + return ( + + ); + }, + }; return (
@@ -363,9 +359,7 @@ function InspectionView({ }} overlayPanels showSidebar={false} - focusSelection - selectionFocusMode="article" - expandedNode={expandedNode} + nodeArticle={nodeArticle} graphLabels={{ architecture: "File", dataflow: "Payload Cloud" }} style={{ minHeight: "100vh" }} /> diff --git a/package-lock.json b/package-lock.json index 019893e..e46adcb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "cultcache-ts", - "version": "0.13.3", + "version": "0.13.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "cultcache-ts", - "version": "0.13.3", + "version": "0.13.4", "license": "MIT", "dependencies": { "@msgpack/msgpack": "^3.1.3", diff --git a/package.json b/package.json index 63f81a7..77d19f8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cultcache-ts", - "version": "0.13.3", + "version": "0.13.4", "description": "CultCache-style typed persistence for TypeScript with schema-backed polymorphic MessagePack storage.", "main": "dist/index.js", "types": "dist/index.d.ts",