UNPKG

@neo4j-ndl/react

Version:

React implementation of Neo4j Design System

117 lines (116 loc) 5.12 kB
/** * * 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; }; };