{"version":3,"file":"simple-node-editor.mjs","sources":["../../../packages/simple-node-editor/src/lib/components/blank/blank.component.ts","../../../packages/simple-node-editor/src/lib/components/simple-node/simple-node.component.ts","../../../packages/simple-node-editor/src/lib/components/simple-node/simple-node.component.html","../../../packages/simple-node-editor/src/lib/components/simple-node-connection/simple-connection.component.ts","../../../packages/simple-node-editor/src/lib/components/simple-node-connection/simple-connection.component.html","../../../packages/simple-node-editor/src/lib/configs/enums.ts","../../../packages/simple-node-editor/src/lib/components/simple-node-editor/simple-node-editor.component.ts","../../../packages/simple-node-editor/src/lib/components/simple-node-editor/simple-node-editor.component.html","../../../packages/simple-node-editor/src/lib/configs/models.ts","../../../packages/simple-node-editor/src/lib/directives/simple-node-control.directive.ts","../../../packages/simple-node-editor/src/lib/directives/simple-node-input.directive.ts","../../../packages/simple-node-editor/src/lib/directives/simple-node-output.directive.ts","../../../packages/simple-node-editor/src/lib/simple-node-editor.module.ts","../../../packages/simple-node-editor/src/lib/models/node-variable.ts","../../../packages/simple-node-editor/src/public-api.ts","../../../packages/simple-node-editor/src/simple-node-editor.ts"],"sourcesContent":["import { ChangeDetectorRef, Component, Input, OnChanges } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'blank-component',\r\n  template: '',\r\n})\r\nexport class BlankComponent implements OnChanges {\r\n  @Input() data!: any;\r\n  @Input() rendered!: any;\r\n\r\n  constructor(private cdr: ChangeDetectorRef) {\r\n    this.cdr.detach();\r\n  }\r\n\r\n  ngOnChanges(): void {\r\n    this.cdr.detectChanges();\r\n    requestAnimationFrame(() => this.rendered());\r\n  }\r\n}\r\n","import { Component, HostBinding, Input, OnChanges, OnInit } from '@angular/core';\r\nimport { ClassicPreset } from 'rete';\r\nimport { SimplifyService,SimpleExtensionMethods, Simplify } from 'simplify-angular';\r\nimport { SimpleNodeEditorComponent } from '../simple-node-editor/simple-node-editor.component';\r\nimport { SimpleNodeOutputDirective } from '../../directives/simple-node-output.directive';\r\nimport { SimpleNodeInputDirective } from '../../directives/simple-node-input.directive';\r\nimport { SimpleNodeConnectionEvent, SimpleNodeVariable } from '../../../public-api';\r\n\r\n@Component({\r\n  selector: 'simple-node',\r\n  templateUrl: './simple-node.component.html',\r\n  styleUrl: './simple-node.component.css'\r\n})\r\nexport class SimpleNodeComponent implements OnChanges, OnInit {\r\n  @Input() data!: any;\r\n  @Input() emit!: (data: any) => void;\r\n  @Input() name:string = \"\";\r\n  @Input() rendered!: () => void;\r\n  get flowVariables():any {\r\n    return this.getNodeFlowVariables();\r\n  }\r\n  inputConnections:any = {};\r\n  outputConnections:any = {};\r\n  simpleNodeEditor: SimpleNodeEditorComponent;\r\n  nodeVariables:any = {};\r\n  node: ClassicPreset.Node;\r\n  nodeId:string = \"\";\r\n  nodeData:any={};\r\n  seed = 0;\r\n\r\n  @HostBinding(\"class.selected\") get selected() {\r\n    let result = false;\r\n    if (this.data) {\r\n      if (this.data.selected) {\r\n        result = this.data.selected;\r\n      }\r\n    }\r\n    return result;\r\n  }\r\n\r\n  get nodeLabel() {\r\n    let result = \"Simple Node\";\r\n    if (this.data) {\r\n      if (this.data.label) {\r\n        result = this.data.label;\r\n      }\r\n    }\r\n    return result;\r\n  }\r\n\r\n  constructor(private simplifyService: SimplifyService) {\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.node = this.data;\r\n    if (this.data) {\r\n      if (this.data.data) {\r\n        let nodeData = this.data.data;\r\n        this.nodeId=this.data.id;\r\n        nodeData[\"node_component\"] = this;\r\n        if (nodeData.simple_node_editor) {\r\n          this.simpleNodeEditor = nodeData.simple_node_editor;\r\n        }\r\n        if (nodeData.data) {\r\n          this.nodeData = nodeData.data;\r\n        }\r\n      }\r\n    }\r\n    if(this.name==\"\"){\r\n      this.name=this.node.id;\r\n    }\r\n  }\r\n\r\n  ngOnChanges(): void {\r\n    requestAnimationFrame(() => this.rendered());\r\n    this.seed++;\r\n  }\r\n\r\n  getNodeFlowVariables():any{\r\n    let result:any = {};\r\n    for(let connectionId in this.inputConnections){\r\n      let connection:SimpleNodeConnectionEvent = this.inputConnections[connectionId];\r\n      if(connection.sourceNodeComponent){\r\n        let sourceNode:SimpleNodeComponent = connection.sourceNodeComponent;\r\n        result = Simplify.copyObjectValues(sourceNode.getNodeFlowVariables(),result);\r\n      }\r\n    }\r\n    for(let variableName in this.nodeVariables){\r\n      let variable:any = this.nodeVariables[variableName];\r\n      result[variableName] = variable[SimpleNodeVariable.keyVariableName];\r\n    }\r\n    return result;\r\n  }\r\n\r\n  notifyInputConnected(connectionEvent:SimpleNodeConnectionEvent){\r\n    this.simpleNodeEditor.logger.log(\"Node \"+this.nodeId+\"'s input \"+connectionEvent.targetNodeInput+\" connected to node \"+connectionEvent.sourceNodeId+\"'s output \"+connectionEvent.sourceNodeOutputId);\r\n  }\r\n\r\n  notifyInputDisconnected(connectionEvent:SimpleNodeConnectionEvent){\r\n    this.simpleNodeEditor.logger.log(\"Node \"+this.nodeId+\"'s input \"+connectionEvent.targetNodeInput+\" disconnected from node \"+connectionEvent.sourceNodeId+\"'s output \"+connectionEvent.sourceNodeOutputId);\r\n  }\r\n\r\n  notifyOutputConnected(connectionEvent:SimpleNodeConnectionEvent){\r\n    this.simpleNodeEditor.logger.log(\"Node \"+this.nodeId+\"'s output \"+connectionEvent.sourceNodeOutputId+\" connected to node \"+connectionEvent.targetNodeId+\"'s input \"+connectionEvent.targetNodeInputId);\r\n  }\r\n\r\n  notifyOutputDisconnected(connectionEvent:SimpleNodeConnectionEvent){\r\n    this.simpleNodeEditor.logger.log(\"Node \"+this.nodeId+\"'s output \"+connectionEvent.sourceNodeOutputId+\" disconnected from node \"+connectionEvent.targetNodeId+\"'s input \"+connectionEvent.targetNodeInputId);\r\n  }\r\n\r\n  removeNode() {\r\n    let callback: any = () => {\r\n      let connections = this.simpleNodeEditor.editor.getConnections();\r\n      if (connections) {\r\n        for(let connection of connections){\r\n          if([connection.source,connection.target].includes(this.node.id)){\r\n            this.simpleNodeEditor.editor.removeConnection(connection.id);\r\n          }\r\n        }\r\n      }\r\n      this.simpleNodeEditor.editor.removeNode(this.node.id);\r\n    };\r\n    this.simplifyService.simpleAlertService.confirmDelete(\"Are you sure you want to delete this node\",{onConfirm:callback});\r\n  }\r\n\r\n  cloneNode() {\r\n    let nodeJson:any = this.toJson();\r\n    delete nodeJson[\"id\"];\r\n    delete nodeJson[\"position\"];\r\n    this.simpleNodeEditor.addNode(nodeJson);\r\n  }\r\n\r\n  toJson() {\r\n    let areaNodes: any = {};\r\n    this.simpleNodeEditor.areaPlugin.nodeViews.forEach((value: any, key: string) => {\r\n      areaNodes[key] = value;\r\n    });\r\n    let result = {\r\n      \"id\": this.node.id,\r\n      \"position\": areaNodes[this.node.id].position,\r\n      \"label\": this.node.label,\r\n      \"data\":this.nodeData\r\n    };\r\n    return result;\r\n  }\r\n\r\n\r\n\r\n\r\n}\r\n","<div class=\"simple-node\">\r\n  <div class=\"simple-node-head\">\r\n    {{nodeLabel}}\r\n    <a (click)=\"removeNode()\" style=\"color:red;float:right;\">Remove</a>\r\n  </div>\r\n  <hr style=\"margin:0px;\">\r\n</div>\r\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\nimport { SimpleNodeEditorComponent } from '../simple-node-editor/simple-node-editor.component';\r\nimport { SimplifyService } from 'simplify-angular';\r\n\r\n@Component({\r\n  selector: 'simple-node-connection',\r\n  templateUrl: './simple-connection.component.html',\r\n  styleUrl: './simple-connection.component.css'\r\n})\r\nexport class SimpleNodeConnectionComponent {\r\n  @Input() data!: any;\r\n  @Input() start: any;\r\n  @Input() end: any;\r\n  @Input() path: string =\"\";\r\n  connectionId:string = \"\";\r\n  connectionData:any;\r\n  simpleNodeEditor?:SimpleNodeEditorComponent;\r\n  constructor(public elementRef:ElementRef,private simplifyService:SimplifyService){\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.setData();\r\n  }\r\n\r\n  setData(){\r\n    let isSet:boolean = false;\r\n    if (this.data) {\r\n      if (this.data.data) {\r\n        isSet = true;\r\n        let connectionData = this.data.data;\r\n        this.connectionId=this.data.id;\r\n        connectionData[\"connection_component\"] = this;\r\n        if (connectionData.simple_node_editor) {\r\n          this.simpleNodeEditor = connectionData.simple_node_editor;\r\n        }\r\n        if (connectionData.data) {\r\n          this.connectionData = connectionData.data;\r\n        }\r\n      }\r\n    }\r\n    if(!isSet){\r\n      setTimeout(() => {\r\n        this.setData();\r\n      }, 100);\r\n    }\r\n  }\r\n\r\n  onContextMenu(event:any){\r\n    if(this.simpleNodeEditor){\r\n      this.simpleNodeEditor.showContextMenu(this.simpleNodeEditor.connectionContextMenuTemplate,event,{\"connection\":this});\r\n    }\r\n  }\r\n\r\n  onClick(event:any){\r\n    if(this.simpleNodeEditor){\r\n      this.simpleNodeEditor.connectionClicked.emit({\"connection\":this});\r\n    }\r\n  }\r\n\r\n  removeConnection() {\r\n    let object=this;\r\n    if(this.simpleNodeEditor){\r\n      let callback: any = () => {\r\n        this.simpleNodeEditor!.editor.removeConnection(this.connectionId);\r\n      };\r\n      this.simplifyService.simpleAlertService.confirmDelete(\"Are you sure you want to delete this connection\",{onConfirm:callback});\r\n    }\r\n\r\n  }\r\n}\r\n","  <svg>\r\n    <path class=\"path\" [attr.d]=\"path\" (contextmenu)=\"onContextMenu($event)\" (click)=\"onClick($event)\"/>\r\n    <path class=\"path-highlight\" [attr.d]=\"path\" (contextmenu)=\"onContextMenu($event)\" (click)=\"onClick($event)\"/>\r\n  </svg>\r\n","export enum ConnectionStatus {\r\n  connected = 'connected',\r\n  disconnected = 'disconnected',\r\n  unknown = 'unknown'\r\n}\r\n","import { Component, ElementRef, EventEmitter, Injector, Input, OnDestroy, OnInit, Output, TemplateRef, Type, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { ClassicPreset, GetSchemes, NodeEditor } from 'rete';\r\nimport { AngularArea2D, AngularPlugin, Presets } from 'rete-angular-plugin/15';\r\nimport { AreaExtensions, AreaPlugin } from 'rete-area-plugin';\r\nimport { ConnectionPlugin,ClassicFlow} from 'rete-connection-plugin';\r\nimport { SimpleExtensionMethods, SimpleLogger, Simplify, SimplifyService } from 'simplify-angular';\r\nimport { SimpleNodeComponent } from '../simple-node/simple-node.component';\r\nimport { SimpleNodeConnectionComponent } from '../simple-node-connection/simple-connection.component';\r\nimport { BlankComponent } from '../blank/blank.component';\r\nimport { SimpleNodeOutputDirective } from '../../directives/simple-node-output.directive';\r\nimport { SimpleNodeInputDirective } from '../../directives/simple-node-input.directive';\r\nimport { ConnectionStatus } from '../../configs/enums';\r\nimport { SimpleNodeConnectionEvent } from '../../configs/models';\r\nimport {\r\n  ContextMenuPlugin,\r\n  Presets as ContextMenuPresets\r\n} from \"rete-context-menu-plugin\";\r\ntype Schemes = GetSchemes<\r\n  ClassicPreset.Node,\r\n  ClassicPreset.Connection<ClassicPreset.Node, ClassicPreset.Node>\r\n>;\r\n\r\ntype AreaExtra = AngularArea2D<Schemes>;\r\n@Component({\r\n  selector: 'simple-node-editor',\r\n  templateUrl: './simple-node-editor.component.html',\r\n  styleUrl: './simple-node-editor.component.css'\r\n})\r\nexport class SimpleNodeEditorComponent implements OnInit, OnDestroy{\r\n  @Input() autoInitEditor:boolean = true;\r\n  @Input() connections:any = {};\r\n  @Input('connectionContextMenuTemplate') connectionContextMenuTemplate!: TemplateRef<any>;\r\n  @Input() defaultConnection:Type<any> = SimpleNodeConnectionComponent;\r\n  @Input() defaultNode:Type<any> = SimpleNodeComponent;\r\n  @Input('editorContextMenuTemplate') editorContextMenuTemplate!: TemplateRef<any>;\r\n  @Input() logger:SimpleLogger = new SimpleLogger();\r\n  @Input('nodeContextMenuTemplate') nodeContextMenuTemplate!: TemplateRef<any>;\r\n  @Input() nodes:any = {};\r\n  @Input() enableLogger:boolean = true;\r\n\r\n  @Output() editorInitialized: EventEmitter<any> = new EventEmitter<any>();\r\n  @Output() nodeAdded: EventEmitter<any> = new EventEmitter<any>();\r\n  @Output() connectionClicked: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n\r\n  @ViewChild('rete') container: ElementRef;\r\n  angularPlugin:AngularPlugin<Schemes, AreaExtra>;\r\n  areaPlugin:AreaPlugin<Schemes, AreaExtra>;\r\n  connectionPlugin:ConnectionPlugin<Schemes, AreaExtra>;\r\n  contextMenuPlugin:any = new ContextMenuPlugin<Schemes>({\r\n    items: ContextMenuPresets.classic.setup([])\r\n  });\r\n  editor: NodeEditor<Schemes>;\r\n  importStatus:any = {\r\n    pendingConnections : [],\r\n    working:false\r\n  };\r\n  socket = new ClassicPreset.Socket('socket');\r\n  private _contextMenuRef:any;\r\n  private _documentClickListenerForContext:any;\r\n  private _documentContextMenuListenerForContext:any;\r\n\r\n\r\n  constructor( private injector: Injector,private elementRef:ElementRef,private viewContainer: ViewContainerRef,private simplifyService:SimplifyService){\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.closeContextMenu();\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.logger.logMessages = this.enableLogger;\r\n    if(this.autoInitEditor){\r\n      this.logger.log(\"Auto Initializing Editor\");\r\n      this.initEditor();\r\n    }\r\n  }\r\n\r\n  async addNode(nodeProperties:any ={}) {\r\n    this.logger.log(\"Adding Node\",nodeProperties.label,nodeProperties);\r\n    let node:any = new ClassicPreset.Node(nodeProperties.label!);\r\n    if(nodeProperties.id){\r\n      node.id=nodeProperties.id;\r\n    }\r\n    node.data = {simple_node_editor : this};\r\n    if(nodeProperties.data){\r\n      node.data[\"data\"] = nodeProperties.data;\r\n    }\r\n    await this.editor.addNode(node);\r\n    let nodePosition = this.getCurrentCenterPosition();\r\n    if(nodeProperties){\r\n      if(nodeProperties.position){\r\n        nodePosition = nodeProperties.position;\r\n      }\r\n    }\r\n    this.areaPlugin.translate(node.id,nodePosition);\r\n    return node.data.node_component;\r\n  }\r\n\r\n  async addConnection(connectionProperties:any ={}) {\r\n    this.logger.info(\"Adding Connection\",connectionProperties);\r\n    let sourceNodeId = connectionProperties[\"source_node_id\"];\r\n    let sourceOutputId = connectionProperties[\"source_output_id\"];\r\n    let targetNodeId = connectionProperties[\"target_node_id\"];\r\n    let targetInputId = connectionProperties[\"target_input_id\"];\r\n    let nodes = this.getNodesMap();\r\n    let foundSockets = false;\r\n    if(nodes[sourceNodeId]){\r\n      if(nodes[targetNodeId]){\r\n        if(nodes[sourceNodeId].outputs[sourceOutputId]){\r\n          if(nodes[targetNodeId].inputs[targetInputId]){\r\n            foundSockets = true;\r\n            this.logger.info(\"Found source & target nodes & sockets\");\r\n          }\r\n          else{\r\n            this.logger.info(\"Cannot find target input for connection : \"+targetInputId);\r\n          }\r\n        }\r\n        else{\r\n          this.logger.info(\"Cannot find source output for connection : \"+sourceOutputId);\r\n        }\r\n      }\r\n      else{\r\n        this.logger.info(\"Cannot find target node for connection : \"+targetNodeId);\r\n      }\r\n    }\r\n    else{\r\n      this.logger.info(\"Cannot find source node for connection : \"+sourceNodeId);\r\n    }\r\n    if(foundSockets){\r\n      let connectionData:any = {\r\n        id: connectionProperties.id,\r\n        source: sourceNodeId,\r\n        sourceOutput: sourceOutputId,\r\n        target: targetNodeId,\r\n        targetInput: targetInputId,\r\n        // data : {simple_node_editor : this}\r\n      };\r\n      await this.editor.addConnection(connectionData).then((result:any)=>{\r\n        if(this.importStatus.pendingConnections.includes(connectionProperties)){\r\n          this.importStatus.pendingConnections = SimpleExtensionMethods.arrayRemove(this.importStatus.pendingConnections,connectionProperties);\r\n        }\r\n        this.logger.log(\"Connection Result\",result,connectionProperties);\r\n      });\r\n      this.logger.log(\"Add Connection Complete\",connectionProperties);\r\n    }\r\n    else{\r\n      this.logger.log(\"Trying to add connection in 500ms\",connectionProperties);\r\n      setTimeout(() => {\r\n        this.addConnection(connectionProperties);\r\n      }, 500);\r\n    }\r\n\r\n  }\r\n\r\n  checkImportCompleted(){\r\n    if(this.importStatus[\"working\"]){\r\n      if(this.importStatus.pendingConnections.length == 0){\r\n        this.logger.log(\"Import completed.\");\r\n        this.importStatus[\"working\"] = false;\r\n      }\r\n      else{\r\n        this.logger.log(\"Import still in progress...\");\r\n        setTimeout(() => {\r\n          this.checkImportCompleted();\r\n        }, 100);\r\n      }\r\n    }\r\n  }\r\n\r\n  private closeContextMenu(): void {\r\n    if (this._contextMenuRef) {\r\n      this._contextMenuRef.destroy();\r\n      this._contextMenuRef = null;\r\n      if (this._documentClickListenerForContext) {\r\n        this._documentClickListenerForContext = undefined;\r\n      }\r\n      if (this._documentContextMenuListenerForContext) {\r\n        this._documentContextMenuListenerForContext = undefined;\r\n      }\r\n    }\r\n  }\r\n\r\n  async createEditor(container: HTMLElement) {\r\n    this.logger.log(\"Creating Editor\");\r\n    let object = this;\r\n    this.socket = new ClassicPreset.Socket('socket');\r\n    this.editor = new NodeEditor<Schemes>();\r\n    await this.editor.clear();\r\n    this.areaPlugin = new AreaPlugin<Schemes, AreaExtra>(container);\r\n    let injector = this.injector;\r\n    this.connectionPlugin = new ConnectionPlugin<Schemes, AreaExtra>();\r\n    this.angularPlugin = new AngularPlugin<Schemes, AreaExtra>({ injector });\r\n    AreaExtensions.selectableNodes(this.areaPlugin, AreaExtensions.selector(), {\r\n      accumulating: AreaExtensions.accumulateOnCtrl(),\r\n    });\r\n    this.angularPlugin.addPreset(\r\n      Presets.classic.setup({\r\n        customize: {\r\n          connection(data:any) {\r\n            return object.resolveConnection(data);\r\n          },\r\n          node(data:any) {\r\n            return object.resolveNode(data);\r\n          },\r\n          socket(){\r\n            return BlankComponent;\r\n          }\r\n        },\r\n      })\r\n    );\r\n    this.connectionPlugin.addPreset(({ nodeId, side, key }) => {\r\n      let flow = new ClassicFlow();\r\n      return flow;\r\n    });\r\n    this.contextMenuPlugin.addPipe((context:any)=>{\r\n      if (['contextmenu'].includes(context.type)) {\r\n        let contextMenuData:any = context.data;\r\n        if(contextMenuData[\"context\"]==\"root\"){\r\n          this.showContextMenu(this.editorContextMenuTemplate,contextMenuData[\"event\"],{\"editor\":this});\r\n        }\r\n        else if(typeof contextMenuData[\"context\"] == \"object\"){\r\n          if(contextMenuData[\"context\"][\"data\"]){\r\n            if(contextMenuData[\"context\"][\"data\"][\"node_component\"]){\r\n              this.showContextMenu(this.nodeContextMenuTemplate,contextMenuData[\"event\"],{\"node\":contextMenuData[\"context\"][\"data\"][\"node_component\"]});\r\n            }\r\n          }\r\n        }\r\n      }\r\n      return context;\r\n    });\r\n    this.editor.use(this.areaPlugin);\r\n    this.areaPlugin.use(this.connectionPlugin);\r\n    this.areaPlugin.use(this.angularPlugin);\r\n    this.areaPlugin.use(this.contextMenuPlugin);\r\n    this.editor.addPipe((context: any) => {\r\n      if (['connectioncreated', 'connectionremoved'].includes(context.type)) {\r\n        this.logger.log(\"Connection changed\");\r\n        let connectionId = context.data.id;\r\n        let sourceNodeId = context.data.source;\r\n        let sourceNodeOutputId = context.data.sourceOutput;\r\n        let targetNodeId = context.data.target;\r\n        let targetNodeInputId = context.data.targetInput;\r\n        let nodesMap = this.getNodesMap();\r\n        let sourceNode = nodesMap[sourceNodeId];\r\n        let targetNode = nodesMap[targetNodeId];\r\n        let connectionStatus:ConnectionStatus = ConnectionStatus.unknown;\r\n        if(context.type == \"connectioncreated\"){\r\n          connectionStatus = ConnectionStatus.connected;\r\n          context.data.data = {simple_node_editor : this};\r\n        }\r\n        else if(context.type == \"connectionremoved\"){\r\n          connectionStatus = ConnectionStatus.disconnected;\r\n        }\r\n        let connectionEvent:SimpleNodeConnectionEvent = {\r\n          connectionId: connectionId,\r\n          connectionStatus: connectionStatus,\r\n          sourceNodeId: sourceNodeId,\r\n          sourceNodeOutputId: sourceNodeOutputId,\r\n          targetNodeId: targetNodeId,\r\n          targetNodeInputId: targetNodeInputId,\r\n        };\r\n        if(sourceNode){\r\n          let output = sourceNode[\"outputs\"][sourceNodeOutputId];\r\n          if(output){\r\n            connectionEvent.sourceNodeOutput = output[\"socket\"];\r\n          }\r\n          else{\r\n            this.logger.log(\"Cannot find source node output\")\r\n          }\r\n        }\r\n        else{\r\n          this.logger.log(\"Cannot find source node\")\r\n        }\r\n        if(targetNode){\r\n          let input = targetNode[\"inputs\"][targetNodeInputId];\r\n          if(input){\r\n            connectionEvent.targetNodeInput = input[\"socket\"];\r\n          }\r\n          else{\r\n            this.logger.log(\"Cannot find target node input\")\r\n          }\r\n        }\r\n        else{\r\n          this.logger.log(\"Cannot find target node\")\r\n        }\r\n        connectionEvent.sourceNodeComponent = this.getSimpleNodeComponentFromNode(sourceNode);\r\n          connectionEvent.targetNodeComponent = this.getSimpleNodeComponentFromNode(targetNode);\r\n          if(connectionEvent.sourceNodeOutput){\r\n            connectionEvent.sourceNodeOutput.notifyConnectionChange(connectionEvent);\r\n          }\r\n          if(connectionEvent.targetNodeInput){\r\n            connectionEvent.targetNodeInput.notifyConnectionChange(connectionEvent);\r\n          }\r\n      }\r\n      return context;\r\n    });\r\n    AreaExtensions.simpleNodesOrder(this.areaPlugin);\r\n    AreaExtensions.zoomAt(this.areaPlugin, this.editor.getNodes());\r\n    return () => this.areaPlugin.destroy();\r\n  }\r\n\r\n  async fromJson(jsonObject:any){\r\n    this.importStatus.working = true;\r\n    if(jsonObject[\"editor\"]!=undefined){\r\n      if(jsonObject[\"editor\"][\"zoom\"]!=undefined){\r\n        await this.setZoomLevel(jsonObject[\"editor\"][\"zoom\"]);\r\n      }\r\n      if(jsonObject[\"editor\"][\"center\"]!=undefined){\r\n        await this.setCenterPosition(jsonObject[\"editor\"][\"center\"].x,jsonObject[\"editor\"][\"center\"].y)\r\n      }\r\n    }\r\n    if(jsonObject[\"nodes\"]!=undefined){\r\n      for(let node of Object.values(jsonObject[\"nodes\"])){\r\n        await this.addNode(node);\r\n      }\r\n    }\r\n    if(jsonObject[\"connections\"]!=undefined){\r\n      for(let connection of jsonObject[\"connections\"]){\r\n        this.importStatus.pendingConnections.push(connection);\r\n        await this.addConnection(connection);\r\n      }\r\n    }\r\n    this.checkImportCompleted();\r\n  }\r\n\r\n  getConnectionsMap(){\r\n    let result:any = Simplify.convertArrayToObject(this.editor.getConnections(),\"id\");;\r\n    return result;\r\n  }\r\n\r\n  getCurrentZoomLevel(): number {\r\n    return this.areaPlugin.area.transform.k;\r\n  }\r\n\r\n  getCurrentCenterPosition(): any {\r\n    const transform = this.areaPlugin.area.transform;\r\n    const containerRect = this.areaPlugin.container.getBoundingClientRect();\r\n    const x = (containerRect.width / 2 - transform.x) / transform.k;\r\n    const y = (containerRect.height / 2 - transform.y) / transform.k;\r\n    return { x:x, y:y };\r\n  }\r\n\r\n  getNodesMap(){\r\n    let result:any = Simplify.convertArrayToObject(this.editor.getNodes(),\"id\");;\r\n    return result;\r\n  }\r\n\r\n  getLinearFlowJson(){\r\n    let result:any[]=[];\r\n    let flows:any[] = this.getLinearNodesFlow();\r\n    for(let flow of flows){\r\n      let flowNodes:any = {};\r\n      this.getLinearFlowJsonNodeObject(flowNodes,flow);\r\n      result.push(Object.values(flowNodes))\r\n    }\r\n    return result;\r\n  }\r\n\r\n  getLinearFlowJsonNodeObject(nodes:any,node:any){\r\n    let nodeId=node.id;\r\n    if(nodes[nodeId]==undefined){\r\n      let nodeComponent = node.data.node_component;\r\n      let flowNode:any = {\r\n        \"node_id\" : node.id,\r\n        \"node_label\" : node.label,\r\n        \"node_data\" : node.data.data,\r\n        \"node_variables\" : nodeComponent.nodeVariables,\r\n        \"next_nodes\" : {}\r\n      };\r\n      nodes[nodeId] = flowNode;\r\n      if(node[\"next_nodes\"]){\r\n        let nextNodes:any = {};\r\n        for(let outputId in node[\"next_nodes\"]){\r\n          let nodeOutput = node[\"next_nodes\"][outputId];\r\n          let outputNextNodes = nodeOutput[\"nodes\"];\r\n          let output:SimpleNodeOutputDirective = nodeOutput[\"output\"][\"socket\"];\r\n          nextNodes[outputId] = {\r\n            \"output_id\":output.outputId,\r\n            \"output_name\":output.name,\r\n            \"output_value\":output.value,\r\n            \"node_ids\":Object.keys(outputNextNodes)\r\n          };\r\n          for(let nextNodeId in outputNextNodes){\r\n            let nextNodeDetails = outputNextNodes[nextNodeId];\r\n            this.getLinearFlowJsonNodeObject(nodes,nextNodeDetails[\"node\"]);\r\n          }\r\n        }\r\n        flowNode[\"next_nodes\"] = nextNodes;\r\n      }\r\n    }\r\n  }\r\n\r\n  getLinearNodesFlow(){\r\n    let result:any[] = [];\r\n    let connections = this.editor.getConnections();\r\n    let nodesMap:any = this.getNodesMap();\r\n    let nodeIds:string[] = Object.keys(nodesMap);\r\n    let sourceNodes:any = {};\r\n    let targetNodes:any = {};\r\n    this.logger.log(nodesMap);\r\n    this.logger.log(connections);\r\n    for(let connection of connections){\r\n      if(sourceNodes[connection.source]==undefined){\r\n        sourceNodes[connection.source] = {};\r\n      }\r\n      if(targetNodes[connection.target]==undefined){\r\n        targetNodes[connection.target] = {};\r\n      }\r\n      if(sourceNodes[connection.source][connection.target]==undefined){\r\n        sourceNodes[connection.source][connection.target] = [];\r\n      }\r\n      if(targetNodes[connection.target][connection.source]==undefined){\r\n        targetNodes[connection.target][connection.source] = [];\r\n      }\r\n      sourceNodes[connection.source][connection.target].push(connection.targetInput);\r\n      targetNodes[connection.target][connection.source].push(connection.sourceOutput);\r\n    }\r\n    let initiatorNodeIds:string[] = SimpleExtensionMethods.arrayDifference(nodeIds,Object.keys(targetNodes));\r\n    for(let initiatorNodeId of initiatorNodeIds){\r\n      let initiatorNode = nodesMap[initiatorNodeId];\r\n      this.getLinearNodeFlowPath(initiatorNode);\r\n      result.push(initiatorNode);\r\n    }\r\n    return result;\r\n  }\r\n\r\n  getLinearNodeFlowPath(node:any,initiatorNodeId:string = \"\"){\r\n    let nodeId = node.id;\r\n    if(initiatorNodeId==\"\"){\r\n      initiatorNodeId = nodeId;\r\n    }\r\n    let nodesMap:any = this.getNodesMap();\r\n    let connections = this.editor.getConnections();\r\n    if(nodesMap[nodeId]){\r\n      let node = nodesMap[nodeId];\r\n      this.logger.log(\"Found node in nodesMap : \"+ node.label);\r\n      if(node.outputs){\r\n        this.logger.log(\"Found outputs for node : \"+ node.label);\r\n        let nextFlows:any = {};\r\n        let nextNodes:any = {};\r\n        for(let outputId in node.outputs){\r\n          let output = node.outputs[outputId];\r\n          this.logger.log(\"Found output for node : \"+ node.label+\" > \"+outputId);\r\n          for(let connection of connections){\r\n            this.logger.log(\"Checking connection for node output in :\",connection,output);\r\n            if(connection.source == nodeId && connection.sourceOutput == outputId){\r\n              this.logger.log(\"Found connection for node output : \"+ node.label+\" > \"+outputId);\r\n              let nextNodeId = connection.target;\r\n              let nextNode = nodesMap[nextNodeId];\r\n              if(nextNode && nextNodeId != initiatorNodeId){\r\n                if(nextNodeId != initiatorNodeId){\r\n                  this.logger.log(\"Target node is not initiator node : \"+ nextNodeId);\r\n                  let nextNodeInputId = connection.targetInput;\r\n                  let nextNodeInput = nextNode.inputs[nextNodeInputId];\r\n                  if(nextNodeInput){\r\n                    this.logger.log(\"Found node input : \"+ nextNodeInputId+\" in \"+nextNodeId);\r\n                    if(nextNodes[nextNodeId]==undefined){\r\n                      nextNodes[nextNodeId] = nextNode;\r\n                    }\r\n                    if(nextFlows[outputId] == undefined){\r\n                      nextFlows[outputId] = {\"output\":output,\"nodes\":{}};\r\n                    }\r\n                    if(nextFlows[outputId][\"nodes\"][nextNodeId] == undefined){\r\n                      nextFlows[outputId][\"nodes\"][nextNodeId] = {\r\n                        \"node\":nextNodes[nextNodeId],\r\n                        \"inputs\":{}\r\n                      };\r\n                    }\r\n                    nextFlows[outputId][\"nodes\"][nextNodeId][\"inputs\"][nextNodeInputId] = {\"input\":nextNodeInput};\r\n                    this.logger.log(\"Added next flow input\");\r\n                  }\r\n                  else{\r\n                    this.logger.log(\"Target node input not found : \"+ nextNodeInputId+\" in \"+nextNodeId);\r\n                  }\r\n                }\r\n                else{\r\n                  this.logger.log(\"Target node is initiator node so stopping : \"+ nextNodeId);\r\n                }\r\n\r\n              }\r\n              else{\r\n                this.logger.log(\"Target node not found in nodesMap : \"+ nextNodeId);\r\n              }\r\n            }\r\n            else{\r\n              this.logger.log(\"Found no connection for node output : \"+ node.label+\"(\"+nodeId+\") > \"+outputId);\r\n            }\r\n          }\r\n        }\r\n        for(let nextNodeId in nextNodes){\r\n          this.getLinearNodeFlowPath(nextNodes[nextNodeId],initiatorNodeId);\r\n        }\r\n        node[\"next_nodes\"] = nextFlows;\r\n      }\r\n      else{\r\n        this.logger.log(\"Node has no outputs : \"+ node.label);\r\n      }\r\n    }\r\n  }\r\n\r\n  getSimpleNodeComponentFromNode(node:any){\r\n    let result:SimpleNodeComponent|undefined;\r\n    if(node){\r\n      if(node.data){\r\n        if(node.data[\"node_component\"]){\r\n          result = node.data[\"node_component\"];\r\n        }\r\n      }\r\n    }\r\n    return result;\r\n  }\r\n\r\n  async initEditor(){\r\n    if(this.container){\r\n      this.logger.log(\"Found Container & Initializing Editor\");\r\n      await this.createEditor(this.container.nativeElement);\r\n      this.editorInitialized.emit();\r\n    }\r\n    else{\r\n      this.logger.log(\"Cannot find container so will try in 500ms\");\r\n      setTimeout(() => {\r\n        this.initEditor();\r\n      }, 500);\r\n    }\r\n  }\r\n\r\n  logConnections(){\r\n    this.logger.log(this.getConnectionsMap());\r\n  }\r\n\r\n  logNodes(){\r\n    this.logger.log(this.getNodesMap());\r\n  }\r\n\r\n  resetEditor(){\r\n\r\n  }\r\n\r\n  resolveConnection(data:any = {}):any{\r\n    let result:any = this.defaultConnection;\r\n    return result;\r\n  }\r\n\r\n  resolveNode(data:any):any{\r\n    let result:any = this.defaultNode;\r\n    return result;\r\n  }\r\n\r\n  async setZoomLevel(zoomLevel: number) {\r\n    await this.areaPlugin.area.zoom(zoomLevel, 0, 0);  // zoom to the center (0, 0)\r\n  }\r\n\r\n  async setCenterPosition(x: number, y: number) {\r\n    const { container } = this.areaPlugin;\r\n    const containerRect = container.getBoundingClientRect();\r\n    const transform = this.areaPlugin.area.transform;\r\n\r\n    const newX = containerRect.width / 2 - x * transform.k;\r\n    const newY = containerRect.height / 2 - y * transform.k;\r\n\r\n    await this.areaPlugin.area.translate(newX, newY);\r\n  }\r\n\r\n  showContextMenu(contextMenuTemplate:TemplateRef<any>,event:any,context:any = {}): void {\r\n      this.closeContextMenu();\r\n      this._contextMenuRef = this.viewContainer.createEmbeddedView(contextMenuTemplate,context);\r\n      const menuElement = this._contextMenuRef.rootNodes[0];\r\n      menuElement.style.position = 'fixed';\r\n      menuElement.style.top = `${event.y}px`;\r\n      menuElement.style.left = `${event.x}px`;\r\n      setTimeout(() => {\r\n        this._documentClickListenerForContext = this.elementRef.nativeElement.ownerDocument.addEventListener('click', () => {\r\n          this.closeContextMenu();\r\n        });\r\n        this._documentContextMenuListenerForContext = this.elementRef.nativeElement.ownerDocument.addEventListener('contextmenu', () => {\r\n          this.closeContextMenu();\r\n        });\r\n      }, 500);\r\n\r\n  }\r\n\r\n  toJson(){\r\n    let result: any = {\r\n      nodes: [],\r\n      connections: [],\r\n      editor:{\r\n        zoom:this.getCurrentZoomLevel(),\r\n        center:this.getCurrentCenterPosition(),\r\n      }\r\n    };\r\n    const nodes:any[] = this.editor.getNodes();\r\n    const connections = this.editor.getConnections();\r\n    for (const node of nodes) {\r\n      let nodeComponent = this.getSimpleNodeComponentFromNode(node);\r\n      if(nodeComponent){\r\n        let nodeJson = nodeComponent.toJson();\r\n        result[\"nodes\"].push(nodeJson);\r\n      }\r\n    }\r\n    for (const connection of connections) {\r\n      result.connections.push({\r\n        id: connection.id,\r\n        source_node_id: connection.source,\r\n        source_output_id: connection.sourceOutput,\r\n        target_node_id: connection.target,\r\n        target_input_id: connection.targetInput,\r\n      });\r\n    }\r\n    return result;\r\n  }\r\n\r\n}\r\n","<div class=\"rete\" #rete></div>\r\n","import { Type } from \"@angular/core\";\r\nimport { ConnectionStatus, SimpleNodeComponent, SimpleNodeEditorComponent, SimpleNodeInputDirective, SimpleNodeOutputDirective } from \"../../public-api\";\r\ninterface BaseData{\r\n  Component: Type<any>|undefined;\r\n  componentName: string|undefined;\r\n  label:string|undefined;\r\n  simpleNodeEditor:SimpleNodeEditorComponent|undefined;\r\n}\r\n\r\nexport interface SimpleNodeConnectionData extends BaseData {\r\n}\r\n\r\nexport interface SimpleNodeConnectionEvent{\r\n  connectionId:string;\r\n  connectionStatus:ConnectionStatus;\r\n  sourceNodeComponent?:SimpleNodeComponent|undefined;\r\n  sourceNodeId:string;\r\n  sourceNodeOutput?:SimpleNodeOutputDirective|undefined;\r\n  sourceNodeOutputId:string;\r\n  targetNodeComponent?:SimpleNodeComponent|undefined;\r\n  targetNodeId:string;\r\n  targetNodeInput?:SimpleNodeInputDirective|undefined;\r\n  targetNodeInputId:string;\r\n}\r\n\r\nexport interface SimpleNodeControlData extends BaseData {\r\n}\r\n\r\n\r\n\r\n\r\nexport interface SimpleNodeData extends BaseData {\r\n  controls:SimpleNodeControlData[]|undefined;\r\n  inputs:SimpleNodeInputData[]|undefined;\r\n  outputs:SimpleNodeOutputData[]|undefined;\r\n  position:{x:number,y:number}|undefined;\r\n}\r\n\r\nexport interface SimpleNodeInputData extends BaseData {\r\n}\r\n\r\nexport interface SimpleNodeOutputData extends BaseData {\r\n}\r\n/*\r\nclass BaseData implements BaseData {\r\n  private _component?: Type<any>|undefined;\r\n  componentName: string|undefined;\r\n  label: string|undefined;\r\n  simpleNodeEditor: SimpleNodeEditorComponent|undefined;\r\n\r\n  constructor({\r\n    component,\r\n    componentName = \"\",\r\n    label = \"\",\r\n    simpleNodeEditor\r\n  }: Partial<BaseData> = {}) {\r\n    if (component) {\r\n      this.component = component;\r\n    }\r\n    this.componentName = componentName;\r\n    this.label = label;\r\n    this.simpleNodeEditor = simpleNodeEditor;\r\n  }\r\n\r\n  get component(): Type<any> | undefined {\r\n    return this._component;\r\n  }\r\n\r\n  set component(value: Type<any> | undefined) {\r\n    this._component = value;\r\n    this.componentName = value ? Simplify.getClassNameFromType(value) : \"\";\r\n  }\r\n\r\n  toJson(): any {\r\n    return {\r\n      component_name: this.componentName,\r\n      label: this.label\r\n    };\r\n  }\r\n}\r\n\r\nexport class SimpleNodeData extends BaseData implements SimpleNodeData {\r\n  controls: SimpleNodeControlData[]|undefined;\r\n  inputs: SimpleNodeInputData[]|undefined;\r\n  outputs: SimpleNodeOutputData[]|undefined;\r\n  position: { x: number; y: number }|undefined;\r\n\r\n  constructor({\r\n    component,\r\n    componentName = \"\",\r\n    label = \"\",\r\n    simpleNodeEditor,\r\n    controls = [],\r\n    inputs = [],\r\n    outputs = [],\r\n    position = { x: 0, y: 0 }\r\n  }: Partial<SimpleNodeData> = {}) {\r\n    super({ component, componentName, label, simpleNodeEditor });\r\n    this.controls = controls;\r\n    this.inputs = inputs;\r\n    this.outputs = outputs;\r\n    this.position = position;\r\n  }\r\n}\r\n*/\r\n","import { Directive, ElementRef, Output, EventEmitter, OnDestroy, OnInit, Input } from '@angular/core';\r\nimport { SimpleNodeComponent, SimpleNodeEditorComponent } from '../../public-api';\r\nimport { ClassicPreset } from 'rete';\r\nimport { Simplify } from 'simplify-angular';\r\n\r\n@Directive({\r\n  selector: '[simpleNodeControl]'\r\n})\r\nexport class SimpleNodeControlDirective extends ClassicPreset.Control implements OnInit, OnDestroy {\r\n  @Input() controlId:string = \"\";\r\n  @Input() name:string = \"\";\r\n  @Input() value:any = \"\";\r\n  @Input() simpleNodeComponent:SimpleNodeComponent;\r\n  uniqueIdentifier:string=Simplify.generateId();\r\n\r\n  constructor(private elementRef: ElementRef) {\r\n    super();\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.autoBindComponent()\r\n  }\r\n\r\n  ngOnDestroy() {\r\n  }\r\n\r\n  autoBindComponent(){\r\n    if(this.simpleNodeComponent){\r\n      if(this.simpleNodeComponent.simpleNodeEditor){\r\n        this.setControlId();\r\n        this.simpleNodeComponent.node.addControl(this.controlId,this);\r\n      }\r\n    }\r\n  }\r\n\r\n  setControlId(){\r\n    if(this.controlId==\"\"){\r\n      let nodeId:string = \"\";\r\n      if(this.simpleNodeComponent){\r\n        nodeId = this.simpleNodeComponent.nodeId;\r\n      }\r\n      let result:string =\"control_\";\r\n      if(this.name!=\"\"){\r\n        result+=this.name+\"_\"+nodeId;\r\n      }\r\n      else{\r\n        result+=nodeId+\"_\"+this.uniqueIdentifier;\r\n      }\r\n      this.controlId = result;\r\n    }\r\n  }\r\n}\r\n","import { Directive, ElementRef, Output, EventEmitter, OnDestroy, OnInit, Input, OnChanges, SimpleChanges, ChangeDetectorRef } from '@angular/core';\r\nimport { SimpleNodeComponent, SimpleNodeConnectionEvent } from '../../public-api';\r\nimport { ClassicPreset } from 'rete';\r\nimport { Simplify } from 'simplify-angular';\r\nimport { ConnectionStatus } from '../configs/enums';\r\nimport { SimpleNodeOutputDirective } from './simple-node-output.directive';\r\n\r\n@Directive({\r\n  selector: '[simpleNodeInput]'\r\n})\r\nexport class SimpleNodeInputDirective implements OnInit, OnDestroy {\r\n  @Input() inputId:string = \"\";\r\n  @Input() multipleConnections:boolean = false;\r\n  @Input() name:string = \"\";\r\n  @Input() value:any = \"\";\r\n  @Input() simpleNodeComponent:SimpleNodeComponent;\r\n  @Output() connected: EventEmitter<any> = new EventEmitter<any>();\r\n  @Output() disconnected: EventEmitter<any> = new EventEmitter<any>();\r\n  @Output() initialized: EventEmitter<any> = new EventEmitter<any>();\r\n  get hasConnections():boolean{\r\n    return Object.keys(this.connections).length>0;\r\n  }\r\n  connections:any = {};\r\n  data:any = {};\r\n  uniqueIdentifier:string = Simplify.generateId();\r\n\r\n  constructor(private elementRef: ElementRef,private cdr: ChangeDetectorRef) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.autoBindComponent();\r\n    this.initialized.emit(this);\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if(this.simpleNodeComponent){\r\n      this.simpleNodeComponent.emit({ type: 'unmount', data: { element: this.elementRef.nativeElement } });\r\n    }\r\n  }\r\n\r\n  autoBindComponent(){\r\n    if(this.simpleNodeComponent){\r\n      if(this.simpleNodeComponent.simpleNodeEditor){\r\n        this.setInputId();\r\n        let input = new ClassicPreset.Input(this, this.inputId,this.multipleConnections);\r\n        this.simpleNodeComponent.node.addInput(this.inputId,input);\r\n        this.data = {type: 'socket', side: 'input', key: this.inputId, nodeId: this.simpleNodeComponent.node.id, seed: this.simpleNodeComponent.seed,input:input };\r\n        this.emitChanges();\r\n      }\r\n    }\r\n  }\r\n\r\n  emitChanges(){\r\n    if(this.simpleNodeComponent){\r\n      this.simpleNodeComponent.emit({ type: 'render', data: { ...this.data, element: this.elementRef.nativeElement } });\r\n    }\r\n    setTimeout(() => {\r\n      this.emitChanges();\r\n    }, 50);\r\n  }\r\n\r\n\r\n  notifyConnectionChange(connectionEvent:SimpleNodeConnectionEvent){\r\n    if(connectionEvent.connectionStatus == ConnectionStatus.connected){\r\n      this.simpleNodeComponent.simpleNodeEditor.logger.log(\"Input \"+this.inputId+\" connected to node \"+connectionEvent.sourceNodeId+\"'s output \"+connectionEvent.sourceNodeOutputId);\r\n      this.connections[connectionEvent.connectionId] = connectionEvent;\r\n      if(!this.simpleNodeComponent.simpleNodeEditor.importStatus.working){\r\n        this.connected.emit(connectionEvent);\r\n        this.simpleNodeComponent.notifyInputConnected(connectionEvent);\r\n      }\r\n    }\r\n    else if(connectionEvent.connectionStatus == ConnectionStatus.disconnected){\r\n      this.simpleNodeComponent.simpleNodeEditor.logger.log(\"Input \"+this.inputId+\" disconnected from node \"+connectionEvent.sourceNodeId+\"'s output \"+connectionEvent.sourceNodeOutputId);\r\n      delete this.connections[connectionEvent.connectionId];\r\n      if(!this.simpleNodeComponent.simpleNodeEditor.importStatus.working){\r\n        this.disconnected.emit(connectionEvent);\r\n        this.simpleNodeComponent.notifyInputDisconnected(connectionEvent);\r\n      }\r\n    }\r\n    this.simpleNodeComponent.inputConnections = this.connections;\r\n  }\r\n\r\n  setInputId(){\r\n    if(this.inputId==\"\"){\r\n      let nodeId:string = \"\";\r\n      if(this.simpleNodeComponent){\r\n        nodeId = this.simpleNodeComponent.nodeId;\r\n      }\r\n      let result:string =\"input_\";\r\n      if(this.name!=\"\"){\r\n        result+=this.name+\"_\"+nodeId;\r\n      }\r\n      else{\r\n        result+=nodeId+\"_\"+this.uniqueIdentifier;\r\n      }\r\n      this.inputId = result;\r\n    }\r\n  }\r\n\r\n}\r\n","import { Directive, ElementRef, Output, EventEmitter, OnDestroy, OnInit, Input, OnChanges, SimpleChanges, ChangeDetectorRef } from '@angular/core';\r\nimport { SimpleNodeComponent, SimpleNodeConnectionEvent } from '../../public-api';\r\nimport { ClassicPreset } from 'rete';\r\nimport { Simplify } from 'simplify-angular';\r\nimport { ConnectionStatus } from '../configs/enums';\r\nimport { SimpleNodeInputDirective } from './simple-node-input.directive';\r\n\r\n@Directive({\r\n  selector: '[simpleNodeOutput]'\r\n})\r\nexport class SimpleNodeOutputDirective implements OnInit, OnDestroy {\r\n  @Input() outputId:string = \"\";\r\n  @Input() multipleConnections:boolean = false;\r\n  @Input() name:string = \"\";\r\n  @Input() value:any = \"\";\r\n  @Input() simpleNodeComponent:SimpleNodeComponent;\r\n  @Output() connected: EventEmitter<any> = new EventEmitter<any>();\r\n  @Output() disconnected: EventEmitter<any> = new EventEmitter<any>();\r\n  @Output() initialized: EventEmitter<any> = new EventEmitter<any>();\r\n  get hasConnections():boolean{\r\n    return Object.keys(this.connections).length>0;\r\n  }\r\n  connections:any = {};\r\n  data:any = {};\r\n  uniqueIdentifier:string = Simplify.generateId();;\r\n\r\n  constructor(private elementRef: ElementRef,private cdr: ChangeDetectorRef) {\r\n  }\r\n\r\n\r\n  ngOnInit() {\r\n    this.autoBindComponent();\r\n    this.initialized.emit(this);\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if(this.simpleNodeComponent){\r\n      this.simpleNodeComponent.emit({ type: 'unmount', data: { element: this.elementRef.nativeElement } });\r\n    }\r\n  }\r\n\r\n  emitChanges(){\r\n    if(this.simpleNodeComponent){\r\n      this.simpleNodeComponent.emit({ type: 'render', data: { ...this.data, element: this.elementRef.nativeElement } });\r\n    }\r\n    setTimeout(() => {\r\n      this.emitChanges();\r\n    }, 50);\r\n  }\r\n\r\n  autoBindComponent(){\r\n    if(this.simpleNodeComponent){\r\n      if(this.simpleNodeComponent.simpleNodeEditor){\r\n        this.setOutputId();\r\n        let output = new ClassicPreset.Output(this, this.outputId,this.multipleConnections);\r\n        this.simpleNodeComponent.node.addOutput(this.outputId,output);\r\n        this.data = {type: 'socket', side: 'output', key: this.outputId, nodeId: this.simpleNodeComponent.node.id, seed: this.simpleNodeComponent.seed,output:output };\r\n        this.emitChanges();\r\n      }\r\n    }\r\n  }\r\n\r\n  notifyConnectionChange(connectionEvent:SimpleNodeConnectionEvent){\r\n    if(this.simpleNodeComponent){\r\n      if(connectionEvent.connectionStatus == ConnectionStatus.connected){\r\n        this.simpleNodeComponent.simpleNodeEditor.logger.log(\"Input \"+this.outputId+\" connected to node \"+connectionEvent.targetNodeId+\"'s input \"+connectionEvent.targetNodeInputId);\r\n        this.connections[connectionEvent.connectionId] = connectionEvent;\r\n        if(!this.simpleNodeComponent.simpleNodeEditor.importStatus.working){\r\n          this.connected.emit(connectionEvent);\r\n          this.simpleNodeComponent.notifyOutputConnected(connectionEvent);\r\n        }\r\n\r\n      }\r\n      else if(connectionEvent.connectionStatus == ConnectionStatus.disconnected){\r\n        this.simpleNodeComponent.simpleNodeEditor.logger.log(\"Input \"+this.outputId+\" disconnected from node \"+connectionEvent.targetNodeId+\"'s input \"+connectionEvent.targetNodeInputId);\r\n        delete this.connections[connectionEvent.connectionId];\r\n        if(!this.simpleNodeComponent.simpleNodeEditor.importStatus.working){\r\n          this.disconnected.emit(connectionEvent);\r\n          this.simpleNodeComponent.notifyOutputDisconnected(connectionEvent);\r\n          }\r\n      }\r\n      this.simpleNodeComponent.outputConnections = this.connections;\r\n    }\r\n  }\r\n\r\n  setOutputId(){\r\n    if(this.outputId==\"\"){\r\n      let nodeId:string = \"\";\r\n      if(this.simpleNodeComponent){\r\n        nodeId = this.simpleNodeComponent.nodeId;\r\n      }\r\n      let result:string =\"output_\";\r\n      if(this.name!=\"\"){\r\n        result+=this.name+\"_\"+nodeId;\r\n      }\r\n      else{\r\n        result+=nodeId+\"_\"+this.uniqueIdentifier;\r\n      }\r\n      this.outputId = result;\r\n    }\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SimpleNodeConnectionComponent } from './components/simple-node-connection/simple-connection.component';\r\nimport { SimpleNodeComponent } from './components/simple-node/simple-node.component';\r\nimport { SimplifyAngularModule } from 'simplify-angular';\r\nimport { SimpleNodeEditorComponent } from './components/simple-node-editor/simple-node-editor.component';\r\nimport { ReteModule } from 'rete-angular-plugin/15';\r\nimport { SimpleNodeControlDirective } from './directives/simple-node-control.directive';\r\nimport { SimpleNodeInputDirective } from './directives/simple-node-input.directive';\r\nimport { SimpleNodeOutputDirective } from './directives/simple-node-output.directive';\r\nimport { BlankComponent } from './components/blank/blank.component';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    SimpleNodeComponent,\r\n    SimpleNodeConnectionComponent,\r\n    SimpleNodeEditorComponent,\r\n    SimpleNodeControlDirective,\r\n    SimpleNodeInputDirective,\r\n    SimpleNodeOutputDirective,\r\n    BlankComponent\r\n  ],\r\n  exports:[\r\n    SimpleNodeComponent,\r\n    SimpleNodeConnectionComponent,\r\n    SimpleNodeEditorComponent,\r\n    SimpleNodeControlDirective,\r\n    SimpleNodeInputDirective,\r\n    SimpleNodeOutputDirective\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    ReteModule,\r\n    SimplifyAngularModule\r\n  ],\r\n  providers: [\r\n  ],\r\n})\r\nexport class SimpleNodeEditorModule { }\r\n","export class SimpleNodeVariable{\r\n    static keyVariableType = \"variable_type\";\r\n    static keyVariableName = \"variable_name\";\r\n    static keyVariableValue = \"variable_value\";\r\n}\r\n","/*\r\n * Public API Surface of simple-node-editor\r\n */\r\n\r\n/* COMPONENTS */\r\nexport * from './lib/components/blank/blank.component';\r\nexport * from './lib/components/simple-node/simple-node.component';\r\nexport * from './lib/components/simple-node-connection/simple-connection.component';\r\nexport * from './lib/components/simple-node-editor/simple-node-editor.component';\r\n\r\n/* CONFIGS */\r\nexport * from './lib/configs/enums';\r\nexport * from './lib/configs/models';\r\n\r\n/* DIRECTIVES */\r\nexport * from './lib/directives/simple-node-control.directive';\r\nexport * from './lib/directives/simple-node-input.directive';\r\nexport * from './lib/directives/simple-node-output.directive';\r\n\r\nexport * from './lib/simple-node-editor.module';\r\n\r\n\r\nexport * from './lib/models/node-variable';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ContextMenuPresets","Presets"],"mappings":"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"}