Skip to content

Commit 8ff8060

Browse files
committed
chore(core): cleanup types
Signed-off-by: braks <[email protected]>
1 parent dec10e9 commit 8ff8060

File tree

5 files changed

+149
-150
lines changed

5 files changed

+149
-150
lines changed

Diff for: packages/core/src/types/changes.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ export interface NodeRemoveChange {
4343
type: 'remove'
4444
}
4545

46-
export interface NodeAddChange<Data = ElementData> {
47-
item: GraphNode<Data>
46+
export interface NodeAddChange<NodeType extends Node = Node> {
47+
item: GraphNode<NodeType>
4848
type: 'add'
4949
}
5050

Diff for: packages/core/src/types/edge.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { CSSProperties, Component, VNode } from 'vue'
2-
import type { ClassFunc, ElementData, Position, StyleFunc, Styles } from './flow'
2+
import type { ElementData, Position, Styles } from './flow'
33
import type { GraphNode } from './node'
44
import type { EdgeComponent, EdgeTextProps } from './components'
55
import type { CustomEvent, EdgeEventsHandler, EdgeEventsOn } from './hooks'
@@ -92,9 +92,9 @@ export interface DefaultEdge<
9292
/** Disable/enable deleting edge */
9393
deletable?: boolean
9494
/** Additional class names, can be a string or a callback returning a string (receives current flow element) */
95-
class?: string | string[] | Record<string, any> | ClassFunc<GraphEdge<Data, CustomEvents>>
95+
class?: string | string[] | Record<string, any>
9696
/** Additional styles, can be an object or a callback returning an object (receives current flow element) */
97-
style?: Styles | StyleFunc<GraphEdge<Data, CustomEvents>>
97+
style?: Styles
9898
/** Is edge hidden */
9999
hidden?: boolean
100100
/** Radius of mouse event triggers (to ease selecting edges), defaults to 2 */

Diff for: packages/core/src/types/flow.ts

-10
Original file line numberDiff line numberDiff line change
@@ -84,16 +84,6 @@ export interface FlowExportObject {
8484
nodes: Node[]
8585
/** exported edges */
8686
edges: Edge[]
87-
/**
88-
* exported viewport position
89-
* @deprecated use {@link FlowExportObject.viewport} instead
90-
*/
91-
position: [x: number, y: number]
92-
/**
93-
* exported zoom level
94-
* @deprecated use {@link FlowExportObject.viewport} instead
95-
*/
96-
zoom: number
9787
/** exported viewport (position + zoom) */
9888
viewport: Viewport
9989
}

Diff for: packages/core/src/types/node.ts

+47-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import type { NodeBase, NodeProps as NodePropsBase } from '@xyflow/system'
2-
import type { ElementData, Styles } from './flow'
1+
import type { NodeBase } from '@xyflow/system'
2+
import type { ElementData, Styles, XYPosition } from './flow'
33
import type { HandleConnectable, HandleElement } from './handle'
44

55
/** Defined as [[x-from, y-from], [x-to, y-to]] */
@@ -21,6 +21,11 @@ export interface NodeHandleBounds {
2121
target?: HandleElement[]
2222
}
2323

24+
export type NodeBounds = XYPosition & {
25+
width: number | null
26+
height: number | null
27+
}
28+
2429
/**
2530
* The node data structure that gets used for the nodes prop.
2631
* @public
@@ -37,8 +42,44 @@ export interface Node<NodeData extends ElementData = ElementData, NodeType exten
3742
style?: Styles
3843
}
3944

40-
/** these props are passed to node components */
41-
export interface NodeProps<NodeType extends NodeBase = NodeBase> extends Omit<NodePropsBase<NodeType>, 'isConnectable'> {
42-
/** can node handles be connected, you need to forward this to your handles for this prop to have any effect */
43-
isConnectable: HandleConnectable
45+
export type GraphNode<NodeType extends Node = Node> = NodeType & {
46+
measured: {
47+
width?: number
48+
height?: number
49+
}
50+
internals: {
51+
positionAbsolute: XYPosition
52+
z: number
53+
/**
54+
* Holds a reference to the original node object provided by the user.
55+
* Used as an optimization to avoid certain operations.
56+
*/
57+
userNode: NodeType
58+
handleBounds?: NodeHandleBounds
59+
bounds?: NodeBounds
60+
}
4461
}
62+
63+
export type NodeProps<NodeType extends Node = Node> = Pick<
64+
NodeType,
65+
| 'id'
66+
| 'data'
67+
| 'width'
68+
| 'height'
69+
| 'sourcePosition'
70+
| 'targetPosition'
71+
| 'selected'
72+
| 'dragHandle'
73+
| 'selectable'
74+
| 'deletable'
75+
| 'draggable'
76+
| 'parentId'
77+
> &
78+
Required<Pick<NodeType, 'type' | 'dragging' | 'zIndex'>> & {
79+
/** whether a node is connectable or not */
80+
isConnectable: HandleConnectable
81+
/** position absolute x value */
82+
positionAbsoluteX: number
83+
/** position absolute x value */
84+
positionAbsoluteY: number
85+
}

0 commit comments

Comments
 (0)