MCPcopy Index your code
hub / github.com/triggerdotdev/jsonhero-web / InfoHeader

Function InfoHeader

app/components/InfoHeader.tsx:22–110  ·  view source on GitHub ↗
({ relatedPaths }: InfoHeaderProps)

Source from the content-addressed store, hash-verified

20};
21
22export function InfoHeader({ relatedPaths }: InfoHeaderProps) {
23 const { selectedNodeId, highlightedNodeId, selectedNodes } =
24 useJsonColumnViewState();
25 const { goToNodeId } = useJsonColumnViewAPI();
26
27 if (!selectedNodeId || !highlightedNodeId || selectedNodes.length === 0) {
28 return <EmptyState />;
29 }
30
31 const selectedNode = selectedNodes[selectedNodes.length - 1];
32
33 const [json] = useJson();
34
35 const selectedHeroPath = new JSONHeroPath(selectedNodeId);
36 const selectedJson = selectedHeroPath.first(json);
37 const selectedInfo = inferType(selectedJson);
38 const formattedSelectedInfo = formatRawValue(selectedInfo);
39 const selectedName = selectedNode.longTitle ?? selectedNode.title;
40
41 const isSelectedLeafNode =
42 selectedInfo.name !== "object" && selectedInfo.name !== "array";
43
44 const canBeNull = useMemo(() => {
45 return isNullable(relatedPaths, json);
46 }, [relatedPaths, json]);
47
48 const [hovering, setHovering] = useState(false);
49 console.warn(selectedInfo);
50
51 const newPath = formattedSelectedInfo.replace(/^#/, "$").replace(/\//g, ".");
52
53 const handleClick = useCallback(() => {
54 goToNodeId(newPath, "pathBar");
55 }, [newPath, goToNodeId]);
56
57 return (
58 <div className="mb-4 pb-4">
59 <div className="flex items-center">
60 <Title className="flex-1 mr-2 overflow-hidden overflow-ellipsis break-words text-slate-700 transition dark:text-slate-200">
61 { selectedName ?? "nothing" }
62 </Title>
63 <div>
64 <ValueIcon
65 monochrome
66 type={selectedInfo}
67 size={ValueIconSize.Medium}
68 />
69 </div>
70 </div>
71 <div
72 className="relative w-full h-full"
73 onMouseEnter={() => setHovering(true)}
74 onMouseLeave={() => setHovering(false)}
75 >
76 {isSelectedLeafNode && (
77 <LargeMono
78 className={`z-10 py-1 mb-1 text-slate-800 overflow-ellipsis break-words transition rounded-sm dark:text-slate-300 ${
79 hovering ? "bg-slate-100 dark:bg-slate-700" : "bg-transparent"

Callers

nothing calls this directly

Calls 8

useJsonColumnViewStateFunction · 0.90
useJsonColumnViewAPIFunction · 0.90
useJsonFunction · 0.90
formatRawValueFunction · 0.90
isNullableFunction · 0.90
concatenatedFunction · 0.90
getHierarchicalTypesFunction · 0.90
checkPathExistsFunction · 0.85

Tested by

no test coverage detected