@neo4j-ndl/react
Version:
React implementation of Neo4j Design System
117 lines (116 loc) • 5.12 kB
TypeScript
/**
*
* Copyright (c) "Neo4j"
* Neo4j Sweden AB [http://neo4j.com]
*
* This file is part of Neo4j.
*
* Neo4j is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import { type HitTargets, type Node, type Relationship } from '@neo4j-nvl/base';
import { type MouseEventCallbacks } from '@neo4j-nvl/react';
import { type Gesture, type GraphSelection, type InteractionMode } from './graph-visualization-context';
export type ManagedNodeStateArgs = {
selected: GraphSelection;
setSelected: (newSelection: GraphSelection) => void;
gesture: Gesture;
interactionMode: InteractionMode;
setInteractionMode: (newInteractionMode: InteractionMode) => void;
mouseEventCallbacks: MouseEventCallbacks;
nvlGraph: {
nodes: Node[];
rels: Relationship[];
};
highlightedNodeIds?: string[];
highlightedRelationshipIds?: string[];
};
export declare function useManagedNodeState({ selected, setSelected, gesture, interactionMode, setInteractionMode, mouseEventCallbacks, nvlGraph, highlightedNodeIds, highlightedRelationshipIds, }: ManagedNodeStateArgs): {
nodesWithState: {
disabled: boolean;
selected: boolean;
size?: number;
pinned?: boolean;
x?: number;
y?: number;
activated?: boolean;
icon?: string;
html?: HTMLElement;
id: string;
color?: string;
caption?: string;
hovered?: boolean;
captionSize?: number;
captionAlign?: "top" | "bottom" | "center";
captions?: import("@neo4j-nvl/base").StyledCaption[];
overlayIcon?: {
url: string;
position?: number[];
size?: number;
};
}[];
relsWithState: {
disabled: boolean;
selected: boolean;
from: string;
to: string;
type?: string;
width?: number;
captionHtml?: HTMLElement;
id: string;
color?: string;
caption?: string;
hovered?: boolean;
captionSize?: number;
captionAlign?: "top" | "bottom" | "center";
captions?: import("@neo4j-nvl/base").StyledCaption[];
overlayIcon?: {
url: string;
position?: number[];
size?: number;
};
}[];
wrappedMouseEventCallbacks: {
onBoxSelect: boolean | (({ nodes, rels }: {
nodes: Node[];
rels: Relationship[];
}, evt: MouseEvent) => void);
onBoxStarted: boolean | ((event: MouseEvent) => void) | undefined;
onCanvasClick: boolean | ((evt: MouseEvent) => void);
onDragEnd: boolean | ((draggedNodes: Node[], evt: MouseEvent) => void);
onDragStart: boolean | ((draggedNodes: Node[], evt: MouseEvent) => void);
onDrawEnded: boolean | ((newRelationshipToAdd: Relationship | null, newTargetNodeToAdd: Node | null, event: MouseEvent) => void);
onDrawStarted: boolean | ((evt: MouseEvent) => void);
onHover: boolean | ((element: Node | Relationship, hitElements: HitTargets, event: MouseEvent) => void) | undefined;
onHoverNodeMargin: boolean | ((hoveredNode: Node | null, evt: MouseEvent) => void) | undefined;
onLassoSelect: boolean | (({ nodes, rels }: {
nodes: Node[];
rels: Relationship[];
}, evt: MouseEvent) => void);
onLassoStarted: boolean | ((event: MouseEvent) => void) | undefined;
onNodeClick: boolean | ((node: Node, hitElements: HitTargets, evt: MouseEvent) => void);
onNodeDoubleClick: boolean | ((node: Node, hitElements: HitTargets, evt: MouseEvent) => void);
onPan: boolean | ((panning: {
x: number;
y: number;
}, event: MouseEvent) => void);
onRelationshipClick: boolean | ((relationship: Relationship, hitElements: HitTargets, evt: MouseEvent) => void);
onRelationshipDoubleClick: boolean | ((relationship: Relationship, hitElements: HitTargets, evt: MouseEvent) => void);
onZoom: boolean | ((zoomLevel: number, event: WheelEvent) => void);
onCanvasDoubleClick?: ((event: MouseEvent) => void) | boolean;
onCanvasRightClick?: ((event: MouseEvent) => void) | boolean;
onNodeRightClick?: ((node: Node, hitElements: HitTargets, event: MouseEvent) => void) | boolean;
onRelationshipRightClick?: ((relationship: Relationship, hitElements: HitTargets, event: MouseEvent) => void) | boolean;
onDrag?: ((nodes: Node[], evt: MouseEvent) => void) | boolean;
};
};