feat(types): add DefaultEdgeTypes-type

Signed-off-by: Braks <78412429+bcakmakoglu@users.noreply.github.com>

feat(types): Add DefaultNodeTypes-type

Signed-off-by: Braks <78412429+bcakmakoglu@users.noreply.github.com>

feat(types): Add DefaultNodeTypes and DefaultEdgeTypes to the exports object

Signed-off-by: Braks <78412429+bcakmakoglu@users.noreply.github.com>
This commit is contained in:
Braks
2021-11-23 23:58:11 +01:00
parent 073b25ec60
commit 1eac951055
3 changed files with 31 additions and 27 deletions
+7 -4
View File
@@ -3,9 +3,13 @@ import { ArrowHeadType, ElementId, Position } from './flow'
import { EdgeTextProps } from './components' import { EdgeTextProps } from './components'
import { SourceTargetNode } from './node' import { SourceTargetNode } from './node'
// eslint-disable-next-line no-use-before-define
export type DefaultEdgeTypes = { [key in 'default' | 'straight' | 'smoothstep' | 'step']: Component<EdgeProps> }
export type EdgeTypes = (keyof DefaultEdgeTypes | string)[]
export interface Edge<T = any> { export interface Edge<T = any> {
id: ElementId id: ElementId
type?: string type?: EdgeTypes[number]
source: ElementId source: ElementId
target: ElementId target: ElementId
sourceHandle?: ElementId sourceHandle?: ElementId
@@ -54,12 +58,11 @@ export interface EdgeSmoothStepProps<T = any> extends EdgeProps<T> {
borderRadius?: number borderRadius?: number
} }
export type EdgeComponent = Component<EdgeProps> | DefineComponent<EdgeSmoothStepProps, any, any, any, any, any> | string
export type EdgeTypes = string[]
export interface EdgePositions { export interface EdgePositions {
sourceX: number sourceX: number
sourceY: number sourceY: number
targetX: number targetX: number
targetY: number targetY: number
} }
export type EdgeComponent = Component<EdgeProps> | DefineComponent<EdgeProps, any, any, any, any, any> | string
+20 -18
View File
@@ -1,5 +1,6 @@
import { Component, CSSProperties, DefineComponent } from 'vue' import { Component, CSSProperties, DefineComponent } from 'vue'
import { XYPosition, ElementId, Position } from './flow' import { DraggableOptions } from '@braks/revue-draggable'
import { XYPosition, ElementId, Position, SnapGrid } from './flow'
import { HandleElement } from './components' import { HandleElement } from './components'
export interface VFInternals { export interface VFInternals {
@@ -13,10 +14,27 @@ export interface VFInternals {
} }
} }
export interface NodeProps<T = any> {
id: ElementId
type?: string
data?: T
selected?: boolean
connectable?: boolean
xPos?: number
yPos?: number
targetPosition?: Position
sourcePosition?: Position
dragging?: boolean
}
export type NodeComponent = Component<NodeProps> | DefineComponent<NodeProps, any, any, any, any> | string
export type DefaultNodeTypes = { [key in 'input' | 'output' | 'default']: Component<NodeProps> }
export type NodeTypes = (keyof DefaultNodeTypes | string)[]
export interface Node<T = any> { export interface Node<T = any> {
id: ElementId id: ElementId
position: XYPosition position: XYPosition
type?: string type?: NodeTypes[number]
class?: string class?: string
style?: CSSProperties style?: CSSProperties
data?: T data?: T
@@ -57,19 +75,3 @@ export type NodeDimensionUpdate = {
nodeElement: HTMLDivElement nodeElement: HTMLDivElement
forceUpdate?: boolean forceUpdate?: boolean
} }
export interface NodeProps<T = any> {
id?: ElementId
type?: string
data?: T
selected?: boolean
connectable?: boolean
xPos?: number
yPos?: number
targetPosition?: Position
sourcePosition?: Position
dragging?: boolean
}
export type NodeComponent = Component<NodeProps> | DefineComponent<NodeProps, any, any, any, any> | string
export type NodeTypes = string[]
+4 -5
View File
@@ -1,28 +1,27 @@
import { Component } from 'vue'
import { isEdge, isNode, parseEdge, parseNode } from './graph' import { isEdge, isNode, parseEdge, parseNode } from './graph'
import { import {
ConnectionMode, ConnectionMode,
EdgeProps,
Elements, Elements,
FlowState, FlowState,
NextElements, NextElements,
NodeExtent, NodeExtent,
GraphNode, GraphNode,
NodeProps,
PanOnScrollMode, PanOnScrollMode,
Node, Node,
Edge, Edge,
DefaultNodeTypes,
DefaultEdgeTypes,
} from '~/types' } from '~/types'
import { DefaultNode, InputNode, OutputNode, BezierEdge, SmoothStepEdge, StepEdge, StraightEdge } from '~/components' import { DefaultNode, InputNode, OutputNode, BezierEdge, SmoothStepEdge, StepEdge, StraightEdge } from '~/components'
import { createHooks } from '~/composables' import { createHooks } from '~/composables'
export const defaultNodeTypes: Record<string, Component<NodeProps>> = { export const defaultNodeTypes: DefaultNodeTypes = {
input: InputNode, input: InputNode,
default: DefaultNode, default: DefaultNode,
output: OutputNode, output: OutputNode,
} }
export const defaultEdgeTypes: Record<string, Component<EdgeProps>> = { export const defaultEdgeTypes: DefaultEdgeTypes = {
default: BezierEdge, default: BezierEdge,
straight: StraightEdge, straight: StraightEdge,
step: StepEdge, step: StepEdge,