From ab482bcf5d446dc5a59051b94449cac83fbbb710 Mon Sep 17 00:00:00 2001 From: braks <78412429+bcakmakoglu@users.noreply.github.com> Date: Sun, 9 Apr 2023 21:57:19 +0200 Subject: [PATCH] fix(core): add missing `Type` generic to node types Signed-off-by: braks <78412429+bcakmakoglu@users.noreply.github.com> --- packages/core/src/types/node.ts | 39 +++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/packages/core/src/types/node.ts b/packages/core/src/types/node.ts index d6c5dc84..7673f7f8 100644 --- a/packages/core/src/types/node.ts +++ b/packages/core/src/types/node.ts @@ -1,6 +1,6 @@ import type { Component, VNode } from 'vue' import type { ClassFunc, Dimensions, ElementData, Position, StyleFunc, Styles, XYPosition, XYZPosition } from './flow' -import type { DefaultNodeTypes, NodeComponent } from './components' +import type { NodeComponent } from './components' import type { HandleConnectable, HandleElement, ValidConnectionFunc } from './handle' import type { CustomEvent, NodeEventsHandler, NodeEventsOn } from './hooks' @@ -29,7 +29,7 @@ export type WidthFunc = (node: GraphNode) => number | string | void /** @deprecated will be removed in next major release */ export type HeightFunc = (node: GraphNode) => number | string | void -export interface Node = any> { +export interface Node = any, Type extends string = string> { /** Unique node id */ id: string /** A node label */ @@ -37,7 +37,7 @@ export interface Node = any, Type extends string = string, -> extends Node { +> extends Node { /** absolute position in relation to parent elements + z-index */ computedPosition: XYZPosition handleBounds: NodeHandleBounds @@ -114,11 +116,11 @@ export interface GraphNode< } /** these props are passed to node components */ -export interface NodeProps { +export interface NodeProps { /** unique node id */ id: string /** node type */ - type?: Type + type: Type /** is node selected */ selected: boolean /** can node handles be connected */ @@ -133,14 +135,24 @@ export interface NodeProps } + +/** + * Transform a Node type to a GraphNode type + */ +export type ToGraphNode = GraphNode< + T extends Node ? Data : never, + T extends Node ? Events : never, + T extends Node ? Type : never +>