import { XYPosition, Dimensions } from './utils'; import { NodeHandleBounds, Node } from './nodes'; import { Edge } from './edges'; export type NodeDimensionChange = { id: string; type: 'dimensions'; dimensions: Dimensions; handleBounds?: NodeHandleBounds; }; export type NodePositionChange = { id: string; type: 'position'; position?: XYPosition; dragging?: boolean; }; export type NodeSelectionChange = { id: string; type: 'select'; selected: boolean; }; export type NodeRemoveChange = { id: string; type: 'remove'; }; export type NodeAddChange = { item: Node; type: 'add'; }; export type NodeResetChange = { item: Node; type: 'reset'; }; export type NodeChange = | NodeDimensionChange | NodePositionChange | NodeSelectionChange | NodeRemoveChange | NodeAddChange | NodeResetChange; export type EdgeSelectionChange = NodeSelectionChange; export type EdgeRemoveChange = NodeRemoveChange; export type EdgeAddChange = { item: Edge; type: 'add'; }; export type EdgeResetChange = { item: Edge; type: 'reset'; }; export type EdgeChange = EdgeSelectionChange | EdgeRemoveChange | EdgeAddChange | EdgeResetChange;