refactor(useConnection): return internal node, add node generic

This commit is contained in:
moklick
2024-07-10 11:58:49 +02:00
parent 1e429da911
commit 6904b5bd49
8 changed files with 50 additions and 36 deletions
+6 -6
View File
@@ -1,10 +1,10 @@
import { shallow } from 'zustand/shallow';
import { useStore } from './useStore';
import type { ReactFlowStore } from '../types/store';
import { ConnectionState, pointToRendererPoint } from '@xyflow/system';
const selector = (s: ReactFlowStore): ConnectionState => {
import { useStore } from './useStore';
import type { InternalNode, Node, ReactFlowStore } from '../types';
const selector = (s: ReactFlowStore) => {
return s.connection.inProgress
? { ...s.connection, to: pointToRendererPoint(s.connection.to, s.transform) }
: { ...s.connection };
@@ -15,6 +15,6 @@ const selector = (s: ReactFlowStore): ConnectionState => {
* @public
* @returns ConnectionState
*/
export function useConnection(): ConnectionState {
return useStore(selector, shallow);
export function useConnection<NodeType extends Node = Node>(): ConnectionState<InternalNode<NodeType>> {
return useStore(selector, shallow) as ConnectionState<InternalNode<NodeType>>;
}
+7 -5
View File
@@ -16,7 +16,7 @@ import type {
OnError,
} from '@xyflow/system';
import { EdgeTypes, Node } from '.';
import { EdgeTypes, InternalNode, Node } from '.';
export type EdgeLabelOptions = {
label?: string | ReactNode;
@@ -190,10 +190,10 @@ export type SimpleBezierEdgeProps = EdgeComponentProps;
export type OnReconnect<EdgeType extends Edge = Edge> = (oldEdge: EdgeType, newConnection: Connection) => void;
export type ConnectionLineComponentProps = {
export type ConnectionLineComponentProps<NodeType extends Node = Node> = {
connectionLineStyle?: CSSProperties;
connectionLineType: ConnectionLineType;
fromNode: Node;
fromNode: InternalNode<NodeType>;
fromHandle: Handle;
fromX: number;
fromY: number;
@@ -202,8 +202,10 @@ export type ConnectionLineComponentProps = {
fromPosition: Position;
toPosition: Position;
connectionStatus: 'valid' | 'invalid' | null;
toNode: Node | null;
toNode: InternalNode<NodeType> | null;
toHandle: Handle | null;
};
export type ConnectionLineComponent = ComponentType<ConnectionLineComponentProps>;
export type ConnectionLineComponent<NodeType extends Node = Node> = ComponentType<
ConnectionLineComponentProps<NodeType>
>;