@ -3,6 +3,7 @@ import { DecoratorNode } from 'lexical'
import type { WorkflowVariableBlockType } from '../../types'
import type { WorkflowVariableBlockType } from '../../types'
import WorkflowVariableBlockComponent from './component'
import WorkflowVariableBlockComponent from './component'
import type { GetVarType } from '../../types'
import type { GetVarType } from '../../types'
import type { Var } from '@/app/components/workflow/types'
export type WorkflowNodesMap = WorkflowVariableBlockType [ 'workflowNodesMap' ]
export type WorkflowNodesMap = WorkflowVariableBlockType [ 'workflowNodesMap' ]
@ -10,31 +11,37 @@ export type SerializedNode = SerializedLexicalNode & {
variables : string [ ]
variables : string [ ]
workflowNodesMap : WorkflowNodesMap
workflowNodesMap : WorkflowNodesMap
getVarType? : GetVarType
getVarType? : GetVarType
environmentVariables? : Var [ ]
conversationVariables? : Var [ ]
}
}
export class WorkflowVariableBlockNode extends DecoratorNode < React.JSX.Element > {
export class WorkflowVariableBlockNode extends DecoratorNode < React.JSX.Element > {
__variables : string [ ]
__variables : string [ ]
__workflowNodesMap : WorkflowNodesMap
__workflowNodesMap : WorkflowNodesMap
__getVarType? : GetVarType
__getVarType? : GetVarType
__environmentVariables? : Var [ ]
__conversationVariables? : Var [ ]
static getType ( ) : string {
static getType ( ) : string {
return 'workflow-variable-block'
return 'workflow-variable-block'
}
}
static clone ( node : WorkflowVariableBlockNode ) : WorkflowVariableBlockNode {
static clone ( node : WorkflowVariableBlockNode ) : WorkflowVariableBlockNode {
return new WorkflowVariableBlockNode ( node . __variables , node . __workflowNodesMap , node . __getVarType , node . __key )
return new WorkflowVariableBlockNode ( node . __variables , node . __workflowNodesMap , node . __getVarType , node . __key , node . __environmentVariables , node . __conversationVariables )
}
}
isInline ( ) : boolean {
isInline ( ) : boolean {
return true
return true
}
}
constructor ( variables : string [ ] , workflowNodesMap : WorkflowNodesMap , getVarType : any , key? : NodeKey ) {
constructor ( variables : string [ ] , workflowNodesMap : WorkflowNodesMap , getVarType : any , key? : NodeKey , environmentVariables? : Var [ ] , conversationVariables? : Var [ ] ) {
super ( key )
super ( key )
this . __variables = variables
this . __variables = variables
this . __workflowNodesMap = workflowNodesMap
this . __workflowNodesMap = workflowNodesMap
this . __getVarType = getVarType
this . __getVarType = getVarType
this . __environmentVariables = environmentVariables
this . __conversationVariables = conversationVariables
}
}
createDOM ( ) : HTMLElement {
createDOM ( ) : HTMLElement {
@ -54,12 +61,14 @@ export class WorkflowVariableBlockNode extends DecoratorNode<React.JSX.Element>
variables = { this . __variables }
variables = { this . __variables }
workflowNodesMap = { this . __workflowNodesMap }
workflowNodesMap = { this . __workflowNodesMap }
getVarType = { this . __getVarType ! }
getVarType = { this . __getVarType ! }
environmentVariables = { this . __environmentVariables }
conversationVariables = { this . __conversationVariables }
/ >
/ >
)
)
}
}
static importJSON ( serializedNode : SerializedNode ) : WorkflowVariableBlockNode {
static importJSON ( serializedNode : SerializedNode ) : WorkflowVariableBlockNode {
const node = $createWorkflowVariableBlockNode ( serializedNode . variables , serializedNode . workflowNodesMap , serializedNode . getVarType )
const node = $createWorkflowVariableBlockNode ( serializedNode . variables , serializedNode . workflowNodesMap , serializedNode . getVarType , serializedNode . environmentVariables , serializedNode . conversationVariables )
return node
return node
}
}
@ -71,6 +80,8 @@ export class WorkflowVariableBlockNode extends DecoratorNode<React.JSX.Element>
variables : this.getVariables ( ) ,
variables : this.getVariables ( ) ,
workflowNodesMap : this.getWorkflowNodesMap ( ) ,
workflowNodesMap : this.getWorkflowNodesMap ( ) ,
getVarType : this.getVarType ( ) ,
getVarType : this.getVarType ( ) ,
environmentVariables : this.getEnvironmentVariables ( ) ,
conversationVariables : this.getConversationVariables ( ) ,
}
}
}
}
@ -89,12 +100,22 @@ export class WorkflowVariableBlockNode extends DecoratorNode<React.JSX.Element>
return self . __getVarType
return self . __getVarType
}
}
getEnvironmentVariables ( ) : any {
const self = this . getLatest ( )
return self . __environmentVariables
}
getConversationVariables ( ) : any {
const self = this . getLatest ( )
return self . __conversationVariables
}
getTextContent ( ) : string {
getTextContent ( ) : string {
return ` {{# ${ this . getVariables ( ) . join ( '.' ) } #}} `
return ` {{# ${ this . getVariables ( ) . join ( '.' ) } #}} `
}
}
}
}
export function $createWorkflowVariableBlockNode ( variables : string [ ] , workflowNodesMap : WorkflowNodesMap , getVarType? : GetVarType ) : WorkflowVariableBlockNode {
export function $createWorkflowVariableBlockNode ( variables : string [ ] , workflowNodesMap : WorkflowNodesMap , getVarType? : GetVarType , environmentVariables? : Var [ ] , conversationVariables? : Var [ ] ): WorkflowVariableBlockNode {
return new WorkflowVariableBlockNode ( variables , workflowNodesMap , getVarType )
return new WorkflowVariableBlockNode ( variables , workflowNodesMap , getVarType , undefined , environmentVariables , conversationVariables )
}
}
export function $isWorkflowVariableBlockNode (
export function $isWorkflowVariableBlockNode (