diff --git a/src/composables/useCoreCommands.ts b/src/composables/useCoreCommands.ts index f691ff7f1..8395fdcf6 100644 --- a/src/composables/useCoreCommands.ts +++ b/src/composables/useCoreCommands.ts @@ -6,7 +6,6 @@ import { DEFAULT_DARK_COLOR_PALETTE, DEFAULT_LIGHT_COLOR_PALETTE } from '@/constants/coreColorPalettes' -import { tryToggleWidgetPromotion } from '@/core/graph/subgraph/proxyWidgetUtils' import { showSubgraphNodeDialog } from '@/core/graph/subgraph/useSubgraphNodeDialog' import { t } from '@/i18n' import { @@ -1033,7 +1032,12 @@ export function useCoreCommands(): ComfyCommand[] { icon: 'icon-[lucide--arrow-left-right]', label: 'Toggle promotion of hovered widget', versionAdded: '1.30.1', - function: tryToggleWidgetPromotion + function: async () => { + const { tryToggleWidgetPromotion } = await import( + '@/renderer/graph/subgraph/proxyWidgetUtils' + ) + tryToggleWidgetPromotion() + } }, { id: 'Comfy.OpenManagerDialog', diff --git a/src/core/graph/subgraph/SubgraphNode.vue b/src/core/graph/subgraph/SubgraphNode.vue index 7be5246f2..25b2149fc 100644 --- a/src/core/graph/subgraph/SubgraphNode.vue +++ b/src/core/graph/subgraph/SubgraphNode.vue @@ -11,6 +11,12 @@ import { import SearchBox from '@/components/common/SearchBox.vue' import SubgraphNodeWidget from '@/core/graph/subgraph/SubgraphNodeWidget.vue' +import { parseProxyWidgets } from '@/core/schemas/proxyWidget' +import type { ProxyWidgetsProperty } from '@/core/schemas/proxyWidget' +import type { LGraphNode } from '@/lib/litegraph/src/litegraph' +import { SubgraphNode } from '@/lib/litegraph/src/subgraph/SubgraphNode' +import type { IBaseWidget } from '@/lib/litegraph/src/types/widgets' +import { useCanvasStore } from '@/renderer/core/canvas/canvasStore' import { demoteWidget, isRecommendedWidget, @@ -19,14 +25,8 @@ import { promoteWidget, pruneDisconnected, widgetItemToProperty -} from '@/core/graph/subgraph/proxyWidgetUtils' -import type { WidgetItem } from '@/core/graph/subgraph/proxyWidgetUtils' -import { parseProxyWidgets } from '@/core/schemas/proxyWidget' -import type { ProxyWidgetsProperty } from '@/core/schemas/proxyWidget' -import type { LGraphNode } from '@/lib/litegraph/src/litegraph' -import { SubgraphNode } from '@/lib/litegraph/src/subgraph/SubgraphNode' -import type { IBaseWidget } from '@/lib/litegraph/src/types/widgets' -import { useCanvasStore } from '@/renderer/core/canvas/canvasStore' +} from '@/renderer/graph/subgraph/proxyWidgetUtils' +import type { WidgetItem } from '@/renderer/graph/subgraph/proxyWidgetUtils' import { DraggableList } from '@/scripts/ui/draggableList' import { useLitegraphService } from '@/services/litegraphService' import { useDialogStore } from '@/stores/dialogStore' diff --git a/src/lib/litegraph/src/types/widgets.ts b/src/lib/litegraph/src/types/widgets.ts index 16fb791c4..01c444efd 100644 --- a/src/lib/litegraph/src/types/widgets.ts +++ b/src/lib/litegraph/src/types/widgets.ts @@ -314,7 +314,7 @@ export interface IBaseWidget< * This property is automatically computed on graph change * and should not be changed. * Promoted widgets have a colored border - * @see /core/graph/subgraph/proxyWidget.registerProxyWidgets + * @see /renderer/graph/subgraph/proxyWidget.registerProxyWidgets */ promoted?: boolean diff --git a/src/core/graph/subgraph/proxyWidget.ts b/src/renderer/graph/subgraph/proxyWidget.ts similarity index 99% rename from src/core/graph/subgraph/proxyWidget.ts rename to src/renderer/graph/subgraph/proxyWidget.ts index ef04bd76b..cb2432fbd 100644 --- a/src/core/graph/subgraph/proxyWidget.ts +++ b/src/renderer/graph/subgraph/proxyWidget.ts @@ -1,7 +1,7 @@ import { demoteWidget, promoteRecommendedWidgets -} from '@/core/graph/subgraph/proxyWidgetUtils' +} from '@/renderer/graph/subgraph/proxyWidgetUtils' import { parseProxyWidgets } from '@/core/schemas/proxyWidget' import type { NodeProperty } from '@/lib/litegraph/src/LGraphNode' import type { diff --git a/src/core/graph/subgraph/proxyWidgetUtils.ts b/src/renderer/graph/subgraph/proxyWidgetUtils.ts similarity index 95% rename from src/core/graph/subgraph/proxyWidgetUtils.ts rename to src/renderer/graph/subgraph/proxyWidgetUtils.ts index 27961e54d..86b1150f4 100644 --- a/src/core/graph/subgraph/proxyWidgetUtils.ts +++ b/src/renderer/graph/subgraph/proxyWidgetUtils.ts @@ -3,7 +3,7 @@ import type { ProxyWidgetsProperty } from '@/core/schemas/proxyWidget' import { isProxyWidget, isDisconnectedWidget -} from '@/core/graph/subgraph/proxyWidget' +} from '@/renderer/graph/subgraph/proxyWidget' import { t } from '@/i18n' import type { IContextMenuValue, @@ -13,7 +13,10 @@ import type { SubgraphNode } from '@/lib/litegraph/src/subgraph/SubgraphNode' import type { IBaseWidget } from '@/lib/litegraph/src/types/widgets.ts' import { useToastStore } from '@/platform/updates/common/toastStore' import { useCanvasStore } from '@/renderer/core/canvas/canvasStore' -import { useLitegraphService } from '@/services/litegraphService' +import { + registerAddWidgetPromotionOptions, + useLitegraphService +} from '@/services/litegraphService' import { useSubgraphNavigationStore } from '@/stores/subgraphNavigationStore' type PartialNode = Pick @@ -86,7 +89,7 @@ function getParentNodes(): SubgraphNode[] { ) } -export function addWidgetPromotionOptions( +function addWidgetPromotionOptions( options: (IContextMenuValue | null)[], widget: IBaseWidget, node: LGraphNode @@ -111,6 +114,8 @@ export function addWidgetPromotionOptions( }) } } + +registerAddWidgetPromotionOptions(addWidgetPromotionOptions) export function tryToggleWidgetPromotion() { const canvas = useCanvasStore().getCanvas() const [x, y] = canvas.graph_mouse diff --git a/src/scripts/app.ts b/src/scripts/app.ts index d26698c62..cc305ee6e 100644 --- a/src/scripts/app.ts +++ b/src/scripts/app.ts @@ -5,7 +5,7 @@ import { reactive, unref } from 'vue' import { shallowRef } from 'vue' import { useCanvasPositionConversion } from '@/composables/element/useCanvasPositionConversion' -import { registerProxyWidgets } from '@/core/graph/subgraph/proxyWidget' +import { registerProxyWidgets } from '@/renderer/graph/subgraph/proxyWidget' import { st, t } from '@/i18n' import type { IContextMenuValue } from '@/lib/litegraph/src/interfaces' import { diff --git a/src/services/litegraphService.ts b/src/services/litegraphService.ts index 35562533b..ab0c3dbe3 100644 --- a/src/services/litegraphService.ts +++ b/src/services/litegraphService.ts @@ -5,7 +5,6 @@ import { useSelectedLiteGraphItems } from '@/composables/canvas/useSelectedLiteG import { useNodeAnimatedImage } from '@/composables/node/useNodeAnimatedImage' import { useNodeCanvasImagePreview } from '@/composables/node/useNodeCanvasImagePreview' import { useNodeImage, useNodeVideo } from '@/composables/node/useNodeImage' -import { addWidgetPromotionOptions } from '@/core/graph/subgraph/proxyWidgetUtils' import { showSubgraphNodeDialog } from '@/core/graph/subgraph/useSubgraphNodeDialog' import { st, t } from '@/i18n' import { @@ -22,6 +21,7 @@ import type { Point, Subgraph } from '@/lib/litegraph/src/litegraph' +import type { IBaseWidget } from '@/lib/litegraph/src/types/widgets' import type { ExportedSubgraphInstance, ISerialisableNodeInput, @@ -62,6 +62,20 @@ import { useExtensionService } from './extensionService' export const CONFIG = Symbol() export const GET_CONFIG = Symbol() +type AddWidgetPromotionOptionsFn = ( + options: (IContextMenuValue | null)[], + widget: IBaseWidget, + node: LGraphNode +) => void + +let addWidgetPromotionOptionsFn: AddWidgetPromotionOptionsFn | undefined + +export const registerAddWidgetPromotionOptions = ( + handler: AddWidgetPromotionOptionsFn | undefined +) => { + addWidgetPromotionOptionsFn = handler +} + /** * Service that augments litegraph with ComfyUI specific functionality. */ @@ -826,7 +840,7 @@ export const useLitegraphService = () => { const [x, y] = canvas.graph_mouse const overWidget = this.getWidgetOnPos(x, y, true) if (overWidget) { - addWidgetPromotionOptions(options, overWidget, this) + addWidgetPromotionOptionsFn?.(options, overWidget, this) } } diff --git a/tests-ui/tests/widgets/proxyWidget.test.ts b/tests-ui/tests/widgets/proxyWidget.test.ts index 940ee66f0..78b70265b 100644 --- a/tests-ui/tests/widgets/proxyWidget.test.ts +++ b/tests-ui/tests/widgets/proxyWidget.test.ts @@ -1,6 +1,6 @@ import { describe, expect, test, vi } from 'vitest' -import { registerProxyWidgets } from '@/core/graph/subgraph/proxyWidget' +import { registerProxyWidgets } from '@/renderer/graph/subgraph/proxyWidget' import { parseProxyWidgets } from '@/core/schemas/proxyWidget' import { LGraphNode } from '@/lib/litegraph/src/litegraph' import type { LGraphCanvas, SubgraphNode } from '@/lib/litegraph/src/litegraph'