import type { CompositeLayerProps } from '@deck.gl/core'; import { CompositeLayer } from '@deck.gl/core'; import type { Graph } from "../graph/graph.js"; import { GraphLayout, type GraphLayoutEventDetail } from "../core/graph-layout.js"; import { GraphEngine } from "../core/graph-engine.js"; import { type GraphStylesheet } from "../style/graph-style-engine.js"; import { type GraphLayerEdgeStyle, type GraphLayerNodeStyle } from "../style/graph-layer-stylesheet.js"; import { EdgeLayer } from "./edge-layer.js"; import { EdgeLabelLayer } from "./edge-layers/edge-label-layer.js"; import { FlowLayer } from "./edge-layers/flow-layer.js"; import { EdgeArrowLayer } from "./edge-layers/edge-arrow-layer.js"; import { type GridLayerProps } from "./common-layers/grid-layer/grid-layer.js"; import { InteractionManager } from "../core/interaction-manager.js"; import { type LabelAccessor, type RankAccessor } from "../utils/rank-grid.js"; type GridLayerOverrides = Partial>; export type RankGridConfig = { enabled?: boolean; direction?: 'horizontal' | 'vertical'; maxLines?: number; rankAccessor?: RankAccessor; labelAccessor?: LabelAccessor; gridProps?: GridLayerOverrides; }; export type GraphLayerRawData = { name?: string; nodes?: unknown[] | null; edges?: unknown[] | null; }; export type GraphLayerDataInput = GraphEngine | Graph | GraphLayerRawData | unknown[] | string | null; export type GraphLayerProps = CompositeLayerProps & _GraphLayerProps & { data?: GraphLayerDataInput | Promise; }; export type _GraphLayerProps = { graph?: Graph; layout?: GraphLayout; graphLoader?: (opts: { json: unknown; }) => Graph | null; engine?: GraphEngine; onLayoutStart?: (detail?: GraphLayoutEventDetail) => void; onLayoutChange?: (detail?: GraphLayoutEventDetail) => void; onLayoutDone?: (detail?: GraphLayoutEventDetail) => void; onLayoutError?: (error?: unknown) => void; stylesheet?: GraphStylesheet; /** @deprecated Use `stylesheet.nodes`. */ nodeStyle?: GraphLayerNodeStyle[]; /** @deprecated Use `stylesheet.edges`. */ edgeStyle?: GraphLayerEdgeStyle | GraphLayerEdgeStyle[]; nodeEvents?: { onMouseLeave?: () => void; onHover?: () => void; onMouseEnter?: () => void; onClick?: () => void; onDrag?: () => void; }; edgeEvents?: { onClick: () => void; onHover: () => void; }; enableDragging?: boolean; rankGrid?: boolean | RankGridConfig; resumeLayoutAfterDragging?: boolean; }; /** Composite layer that renders graph nodes, edges, and decorators. */ export declare class GraphLayer extends CompositeLayer { static layerName: string; static defaultProps: _GraphLayerProps & Pick & { data: { type: string; value: null; async: true; }; }; state: CompositeLayer['state'] & { interactionManager: InteractionManager; graphEngine?: GraphEngine | null; layoutVersion: number; layoutState?: string; interactionVersion: number; }; private readonly _edgeAttachmentHelper; private _suppressNextDeckDataChange; forceUpdate: () => void; constructor(props: GraphLayerProps & CompositeLayerProps); initializeState(): void; shouldUpdateState({ changeFlags }: { changeFlags: any; }): any; updateState({ props, oldProps, changeFlags }: { props: any; oldProps: any; changeFlags: any; }): void; finalize(): void; private _getResolvedStylesheet; private _createStylesheetEngine; private _refreshEngineFromProps; private _resolveEngineCandidate; private _getEngineFromData; private _getEngineFromEngineProp; private _getEngineFromGraphProp; private _deriveEngineFromData; private _buildEngineFromGraph; private _syncInteractionManager; private _warnGraphProp; private _warnLayoutRequired; private _isGraph; private _coerceGraph; private _convertToClassicGraph; private _updateLayoutSnapshot; private _handleLayoutEvent; _setGraphEngine(graphEngine: GraphEngine | null): void; _removeGraphEngine(): void; private _applyGraphEngineCallbacks; private _createRankGridLayer; private _normalizeRankGridConfig; private _resolveRankGridBounds; private _buildRankGridData; private _resolveRankFieldLabel; createNodeLayers(): any[]; createEdgeLayers(): (EdgeLayer | EdgeLabelLayer | FlowLayer | EdgeArrowLayer)[]; onClick(info: any, event: any): boolean; onHover(info: any, event: any): boolean; onDragStart(info: any, event: any): void; onDrag(info: any, event: any): void; onDragEnd(info: any, event: any): void; renderLayers(): any[]; private _createChainOverlayLayers; } export {}; //# sourceMappingURL=graph-layer.d.ts.map