Skip to content

Commit 76be537

Browse files
authored
Add �pp.addNodeOnGraph to simplify adding node on canvas (#239)
1 parent 424a5f7 commit 76be537

File tree

2 files changed

+28
-15
lines changed

2 files changed

+28
-15
lines changed

src/components/NodeSearchBoxPopover.vue

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,17 @@
2222

2323
<script setup lang="ts">
2424
import { app } from '@/scripts/app'
25-
import { inject, onMounted, onUnmounted, reactive, Ref, ref } from 'vue'
25+
import { onMounted, onUnmounted, reactive, ref } from 'vue'
2626
import NodeSearchBox from './NodeSearchBox.vue'
2727
import Dialog from 'primevue/dialog'
2828
import {
2929
INodeSlot,
30-
LiteGraph,
3130
LiteGraphCanvasEvent,
3231
LGraphNode,
3332
LinkReleaseContext
3433
} from '@comfyorg/litegraph'
3534
import { FilterAndValue } from '@/services/nodeSearchService'
36-
import { ComfyNodeDef } from '@/types/apiTypes'
37-
import { useNodeDefStore } from '@/stores/nodeDefStore'
35+
import { ComfyNodeDefImpl, useNodeDefStore } from '@/stores/nodeDefStore'
3836
3937
interface LiteGraphPointerEvent extends Event {
4038
canvasX: number
@@ -99,17 +97,14 @@ const connectNodeOnLinkRelease = (
9997
node.connect(destSlotIndex, srcNode, srcSlotIndex)
10098
}
10199
}
102-
const addNode = (nodeDef: ComfyNodeDef) => {
100+
const addNode = (nodeDef: ComfyNodeDefImpl) => {
103101
closeDialog()
104-
const node = LiteGraph.createNode(nodeDef.name, nodeDef.display_name, {})
105-
if (node) {
106-
node.pos = getNewNodeLocation()
107-
app.graph.add(node)
108-
109-
const eventDetail = triggerEvent.value.detail
110-
if (eventDetail.subType === 'empty-release') {
111-
connectNodeOnLinkRelease(node, eventDetail.linkReleaseContext)
112-
}
102+
103+
const node = app.addNodeOnGraph(nodeDef, { pos: getNewNodeLocation() })
104+
105+
const eventDetail = triggerEvent.value.detail
106+
if (eventDetail.subType === 'empty-release') {
107+
connectNodeOnLinkRelease(node, eventDetail.linkReleaseContext)
113108
}
114109
}
115110

src/scripts/app.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,12 @@ import { StorageLocation } from '@/types/settingTypes'
3636
import '@comfyorg/litegraph/css/litegraph.css'
3737
import '../assets/css/style.css'
3838
import { ExtensionManager } from '@/types/extensionTypes'
39-
import { SYSTEM_NODE_DEFS, useNodeDefStore } from '@/stores/nodeDefStore'
39+
import {
40+
ComfyNodeDefImpl,
41+
SYSTEM_NODE_DEFS,
42+
useNodeDefStore
43+
} from '@/stores/nodeDefStore'
44+
import { Vector2 } from '@comfyorg/litegraph'
4045

4146
export const ANIM_PREVIEW_WIDGET = '$$comfy_animation_preview'
4247

@@ -2933,6 +2938,19 @@ export class ComfyApp {
29332938
this.lastExecutionError = null
29342939
this.runningNodeId = null
29352940
}
2941+
2942+
addNodeOnGraph(
2943+
nodeDef: ComfyNodeDef | ComfyNodeDefImpl,
2944+
options: Record<string, any> = {}
2945+
): LGraphNode {
2946+
const node = LiteGraph.createNode(
2947+
nodeDef.name,
2948+
nodeDef.display_name,
2949+
options
2950+
)
2951+
this.graph.add(node)
2952+
return node
2953+
}
29362954
}
29372955

29382956
export const app = new ComfyApp()

0 commit comments

Comments
 (0)