Skip to content

Commit 970de5a

Browse files
refactor: move useCanvasInteractions to follow DDD structure
Move useCanvasInteractions from src/composables/graph/ to src/renderer/core/canvas/ to follow Domain-Driven Design principles. Canvas interactions are specifically about canvas behavior and should be grouped with other canvas-related functionality. Also move the corresponding test file to maintain the same directory structure. Updated all import paths across: - Vue components (GraphCanvas, GraphCanvasMenu, SelectionToolbox, etc.) - Vue node components (LGraphNode, NodeWidgets) - Composables (useNodeEventHandlers, useNodeImage) - Test files and mocks
1 parent eb847a9 commit 970de5a

File tree

8 files changed

+16
-16
lines changed

8 files changed

+16
-16
lines changed

src/components/graph/GraphCanvas.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,6 @@ import NodeSearchboxPopover from '@/components/searchbox/NodeSearchBoxPopover.vu
9696
import SideToolbar from '@/components/sidebar/SideToolbar.vue'
9797
import SecondRowWorkflowTabs from '@/components/topbar/SecondRowWorkflowTabs.vue'
9898
import { useChainCallback } from '@/composables/functional/useChainCallback'
99-
import { useCanvasInteractions } from '@/composables/graph/useCanvasInteractions'
10099
import { useViewportCulling } from '@/composables/graph/useViewportCulling'
101100
import { useVueNodeLifecycle } from '@/composables/graph/useVueNodeLifecycle'
102101
import { useNodeBadge } from '@/composables/node/useNodeBadge'
@@ -118,6 +117,7 @@ import { useWorkflowAutoSave } from '@/platform/workflow/persistence/composables
118117
import { useWorkflowPersistence } from '@/platform/workflow/persistence/composables/useWorkflowPersistence'
119118
import { useCanvasStore } from '@/renderer/core/canvas/canvasStore'
120119
import { SelectedNodeIdsKey } from '@/renderer/core/canvas/injectionKeys'
120+
import { useCanvasInteractions } from '@/renderer/core/canvas/useCanvasInteractions'
121121
import TransformPane from '@/renderer/core/layout/transform/TransformPane.vue'
122122
import MiniMap from '@/renderer/extensions/minimap/MiniMap.vue'
123123
import VueGraphNode from '@/renderer/extensions/vueNodes/components/LGraphNode.vue'

src/components/graph/GraphCanvasMenu.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,11 +124,11 @@ import ButtonGroup from 'primevue/buttongroup'
124124
import { computed, onBeforeUnmount, onMounted } from 'vue'
125125
import { useI18n } from 'vue-i18n'
126126
127-
import { useCanvasInteractions } from '@/composables/graph/useCanvasInteractions'
128127
import { useZoomControls } from '@/composables/useZoomControls'
129128
import { LiteGraph } from '@/lib/litegraph/src/litegraph'
130129
import { useSettingStore } from '@/platform/settings/settingStore'
131130
import { useCanvasStore } from '@/renderer/core/canvas/canvasStore'
131+
import { useCanvasInteractions } from '@/renderer/core/canvas/useCanvasInteractions'
132132
import { useMinimap } from '@/renderer/extensions/minimap/composables/useMinimap'
133133
import { useCommandStore } from '@/stores/commandStore'
134134
import { useWorkspaceStore } from '@/stores/workspaceStore'

src/components/graph/SelectionToolbox.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import { beforeEach, describe, expect, it, vi } from 'vitest'
55
import { createI18n } from 'vue-i18n'
66

77
import SelectionToolbox from '@/components/graph/SelectionToolbox.vue'
8-
import { useCanvasInteractions } from '@/composables/graph/useCanvasInteractions'
98
import { useCanvasStore } from '@/renderer/core/canvas/canvasStore'
9+
import { useCanvasInteractions } from '@/renderer/core/canvas/useCanvasInteractions'
1010
import { useExtensionService } from '@/services/extensionService'
1111

1212
// Mock the composables and services
13-
vi.mock('@/composables/graph/useCanvasInteractions', () => ({
13+
vi.mock('@/renderer/core/canvas/useCanvasInteractions', () => ({
1414
useCanvasInteractions: vi.fn(() => ({
1515
handleWheel: vi.fn()
1616
}))

src/components/graph/SelectionToolbox.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ import MaskEditorButton from '@/components/graph/selectionToolbox/MaskEditorButt
6060
import RefreshSelectionButton from '@/components/graph/selectionToolbox/RefreshSelectionButton.vue'
6161
import PublishSubgraphButton from '@/components/graph/selectionToolbox/SaveToSubgraphLibrary.vue'
6262
import { useSelectionToolboxPosition } from '@/composables/canvas/useSelectionToolboxPosition'
63-
import { useCanvasInteractions } from '@/composables/graph/useCanvasInteractions'
6463
import { useSelectionState } from '@/composables/graph/useSelectionState'
6564
import { useCanvasStore } from '@/renderer/core/canvas/canvasStore'
65+
import { useCanvasInteractions } from '@/renderer/core/canvas/useCanvasInteractions'
6666
import { useMinimap } from '@/renderer/extensions/minimap/composables/useMinimap'
6767
import { useExtensionService } from '@/services/extensionService'
6868
import { type ComfyCommandImpl, useCommandStore } from '@/stores/commandStore'

src/composables/node/useNodeImage.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { useCanvasInteractions } from '@/composables/graph/useCanvasInteractions'
21
import type { LGraphNode } from '@/lib/litegraph/src/litegraph'
2+
import { useCanvasInteractions } from '@/renderer/core/canvas/useCanvasInteractions'
33
import { useNodeOutputStore } from '@/stores/imagePreviewStore'
44
import { fitDimensionsToNodeWidth } from '@/utils/imageUtil'
55

src/composables/graph/useCanvasInteractions.ts renamed to src/renderer/core/canvas/useCanvasInteractions.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ export function useCanvasInteractions() {
1919
)
2020

2121
/**
22-
* Whether Vue components can capture pointer events.
23-
* Returns false when canvas is in read-only/panning mode.
22+
* Whether Vue node components should handle pointer events.
23+
* Returns false when canvas is in read-only/panning mode (e.g., space key held for panning).
2424
*/
25-
const canCapturePointerEvents = computed(
25+
const shouldHandleNodePointerEvents = computed(
2626
() => !(canvasStore.canvas?.read_only ?? false)
2727
)
2828

@@ -107,6 +107,6 @@ export function useCanvasInteractions() {
107107
handleWheel,
108108
handlePointer,
109109
forwardEventToCanvas,
110-
canCapturePointerEvents
110+
shouldHandleNodePointerEvents
111111
}
112112
}

tests-ui/tests/composables/graph/useCanvasInteractions.test.ts renamed to tests-ui/tests/renderer/core/canvas/useCanvasInteractions.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { beforeEach, describe, expect, it, vi } from 'vitest'
22

3-
import { useCanvasInteractions } from '@/composables/graph/useCanvasInteractions'
43
import type { LGraphCanvas } from '@/lib/litegraph/src/litegraph'
5-
import { useSettingStore } from '@/platform/settings/settingStore'
64
import { useCanvasStore } from '@/renderer/core/canvas/canvasStore'
5+
import { useCanvasInteractions } from '@/renderer/core/canvas/useCanvasInteractions'
6+
import { useSettingStore } from '@/platform/settings/settingStore'
77

88
// Mock stores
99
vi.mock('@/renderer/core/canvas/canvasStore', () => {

tests-ui/tests/renderer/extensions/vueNodes/composables/useNodeEventHandlers.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
import { beforeEach, describe, expect, it, vi } from 'vitest'
22
import { computed, ref } from 'vue'
33

4-
import { useCanvasInteractions } from '@/composables/graph/useCanvasInteractions'
54
import type { VueNodeData } from '@/composables/graph/useGraphNodeManager'
65
import { useGraphNodeManager } from '@/composables/graph/useGraphNodeManager'
76
import type { LGraphCanvas, LGraphNode } from '@/lib/litegraph/src/litegraph'
87
import { useCanvasStore } from '@/renderer/core/canvas/canvasStore'
8+
import { useCanvasInteractions } from '@/renderer/core/canvas/useCanvasInteractions'
99
import { useLayoutMutations } from '@/renderer/core/layout/operations/layoutMutations'
1010
import { useNodeEventHandlers } from '@/renderer/extensions/vueNodes/composables/useNodeEventHandlers'
1111

1212
vi.mock('@/renderer/core/canvas/canvasStore', () => ({
1313
useCanvasStore: vi.fn()
1414
}))
1515

16-
vi.mock('@/composables/graph/useCanvasInteractions', () => ({
16+
vi.mock('@/renderer/core/canvas/useCanvasInteractions', () => ({
1717
useCanvasInteractions: vi.fn()
1818
}))
1919

@@ -75,10 +75,10 @@ function createMockLayoutMutations(): Pick<
7575

7676
function createMockCanvasInteractions(): Pick<
7777
ReturnType<typeof useCanvasInteractions>,
78-
'canCapturePointerEvents'
78+
'shouldHandleNodePointerEvents'
7979
> {
8080
return {
81-
canCapturePointerEvents: computed(() => true) // Default to allowing pointer events
81+
shouldHandleNodePointerEvents: computed(() => true) // Default to allowing pointer events
8282
}
8383
}
8484

0 commit comments

Comments
 (0)