refactor(editor): Move remaining canvas code to features (no-changelog) (#20633)

This commit is contained in:
Alex Grozav 2025-10-10 15:30:03 +03:00 committed by GitHub
parent 7ae88f836c
commit 409f285a33
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
26 changed files with 29 additions and 26 deletions

View File

@ -1 +0,0 @@
export * from './canvas';

View File

@ -1,4 +1,4 @@
import { createCanvasGraphNode } from '@/__tests__/data';
import { createCanvasGraphNode } from '@/features/canvas/__tests__/utils';
import { createTestNode, createTestWorkflow, mockNodeTypeDescription } from '@/__tests__/mocks';
import { createComponentRenderer } from '@/__tests__/render';
import { mockedStore } from '@/__tests__/utils';

View File

@ -117,7 +117,7 @@ import { isChatNode } from '@/utils/aiUtils';
import cloneDeep from 'lodash/cloneDeep';
import uniq from 'lodash/uniq';
import { useExperimentalNdvStore } from '@/features/canvas/experimental/experimentalNdv.store';
import { canvasEventBus } from '@/event-bus/canvas';
import { canvasEventBus } from '@/features/canvas/canvas.eventBus';
import { useFocusPanelStore } from '@/stores/focusPanel.store';
import type { TelemetryNdvSource, TelemetryNdvType } from '@/types/telemetry';
import { useRoute, useRouter } from 'vue-router';

View File

@ -1,4 +1,4 @@
import type { CanvasEventBusEvents } from '@/features/canvas/canvas.types';
import type { CanvasEventBusEvents } from './canvas.types';
import { createEventBus } from '@n8n/utils/event-bus';
export const canvasEventBus = createEventBus<CanvasEventBusEvents>();

View File

@ -4,12 +4,12 @@ import { createComponentRenderer } from '@/__tests__/render';
import Canvas from './Canvas.vue';
import { createPinia, setActivePinia } from 'pinia';
import type { CanvasConnection, CanvasNode } from '../canvas.types';
import { createCanvasConnection, createCanvasNodeElement } from '@/__tests__/data';
import { createCanvasConnection, createCanvasNodeElement } from '@/features/canvas/__tests__/utils';
import { NodeConnectionTypes } from 'n8n-workflow';
import type { useDeviceSupport } from '@n8n/composables/useDeviceSupport';
import { useVueFlow } from '@vue-flow/core';
import { SIMULATE_NODE_TYPE } from '@/constants';
import { canvasEventBus } from '@/event-bus/canvas';
import { canvasEventBus } from '@/features/canvas/canvas.eventBus';
const matchMedia = global.window.matchMedia;
// @ts-expect-error Initialize window object

View File

@ -4,7 +4,7 @@ import { createTestingPinia } from '@pinia/testing';
import { setActivePinia } from 'pinia';
import type { ConnectionLineProps } from '@vue-flow/core';
import { Position } from '@vue-flow/core';
import { createCanvasProvide } from '@/__tests__/data';
import { createCanvasProvide } from '@/features/canvas/__tests__/utils';
import { waitFor } from '@testing-library/vue';
const DEFAULT_PROPS = {

View File

@ -1,6 +1,6 @@
import CanvasHandleMainInput from './CanvasHandleMainInput.vue';
import { createComponentRenderer } from '@/__tests__/render';
import { createCanvasHandleProvide } from '@/__tests__/data';
import { createCanvasHandleProvide } from '@/features/canvas/__tests__/utils';
const renderComponent = createComponentRenderer(CanvasHandleMainInput);

View File

@ -1,6 +1,6 @@
import CanvasHandleMainOutput from './CanvasHandleMainOutput.vue';
import { createComponentRenderer } from '@/__tests__/render';
import { createCanvasHandleProvide } from '@/__tests__/data';
import { createCanvasHandleProvide } from '@/features/canvas/__tests__/utils';
const renderComponent = createComponentRenderer(CanvasHandleMainOutput);

View File

@ -1,6 +1,6 @@
import CanvasHandleNonMainInput from './CanvasHandleNonMainInput.vue';
import { createComponentRenderer } from '@/__tests__/render';
import { createCanvasHandleProvide } from '@/__tests__/data';
import { createCanvasHandleProvide } from '@/features/canvas/__tests__/utils';
const renderComponent = createComponentRenderer(CanvasHandleNonMainInput);

View File

@ -1,6 +1,6 @@
import CanvasHandleNonMainOutput from './CanvasHandleNonMainOutput.vue';
import { createComponentRenderer } from '@/__tests__/render';
import { createCanvasHandleProvide } from '@/__tests__/data';
import { createCanvasHandleProvide } from '@/features/canvas/__tests__/utils';
const renderComponent = createComponentRenderer(CanvasHandleNonMainOutput);

View File

@ -1,7 +1,7 @@
import { fireEvent } from '@testing-library/vue';
import CanvasHandlePlus from './CanvasHandlePlus.vue';
import { createComponentRenderer } from '@/__tests__/render';
import { createCanvasHandleProvide } from '@/__tests__/data';
import { createCanvasHandleProvide } from '@/features/canvas/__tests__/utils';
const renderComponent = createComponentRenderer(CanvasHandlePlus, {
global: {

View File

@ -3,7 +3,11 @@ import { createComponentRenderer } from '@/__tests__/render';
import { createPinia, setActivePinia } from 'pinia';
import { NodeConnectionTypes } from 'n8n-workflow';
import { fireEvent } from '@testing-library/vue';
import { createCanvasNodeData, createCanvasNodeProps, createCanvasProvide } from '@/__tests__/data';
import {
createCanvasNodeData,
createCanvasNodeProps,
createCanvasProvide,
} from '@/features/canvas/__tests__/utils';
import { CanvasNodeRenderType } from '../../../canvas.types';
vi.mock('@/stores/nodeTypes.store', () => ({

View File

@ -1,6 +1,6 @@
import CanvasNodeRenderer from './CanvasNodeRenderer.vue';
import { createComponentRenderer } from '@/__tests__/render';
import { createCanvasNodeProvide, createCanvasProvide } from '@/__tests__/data';
import { createCanvasNodeProvide, createCanvasProvide } from '@/features/canvas/__tests__/utils';
import { createTestingPinia } from '@pinia/testing';
import { setActivePinia } from 'pinia';
import { CanvasNodeRenderType } from '../../../canvas.types';

View File

@ -2,7 +2,7 @@ import { waitFor } from '@testing-library/vue';
import userEvent from '@testing-library/user-event';
import CanvasNodeToolbar from './CanvasNodeToolbar.vue';
import { createComponentRenderer } from '@/__tests__/render';
import { createCanvasNodeProvide, createCanvasProvide } from '@/__tests__/data';
import { createCanvasNodeProvide, createCanvasProvide } from '@/features/canvas/__tests__/utils';
import { CanvasNodeRenderType } from '../../../canvas.types';
import { createPinia, setActivePinia, type Pinia } from 'pinia';

View File

@ -1,4 +1,4 @@
import { createCanvasNodeProvide, createCanvasProvide } from '@/__tests__/data';
import { createCanvasNodeProvide, createCanvasProvide } from '@/features/canvas/__tests__/utils';
import { createComponentRenderer } from '@/__tests__/render';
import { TEMPLATES_URLS } from '@/constants';
import { useSettingsStore } from '@/stores/settings.store';

View File

@ -1,7 +1,7 @@
import CanvasNodeDefault from './CanvasNodeDefault.vue';
import { createComponentRenderer } from '@/__tests__/render';
import { NodeConnectionTypes } from 'n8n-workflow';
import { createCanvasNodeProvide, createCanvasProvide } from '@/__tests__/data';
import { createCanvasNodeProvide, createCanvasProvide } from '@/features/canvas/__tests__/utils';
import { createTestingPinia } from '@pinia/testing';
import { setActivePinia } from 'pinia';
import { CanvasConnectionMode, CanvasNodeRenderType } from '../../../../canvas.types';

View File

@ -1,6 +1,6 @@
import CanvasNodeStickyNote from './CanvasNodeStickyNote.vue';
import { createComponentRenderer } from '@/__tests__/render';
import { createCanvasNodeProvide } from '@/__tests__/data';
import { createCanvasNodeProvide } from '@/features/canvas/__tests__/utils';
import { createTestingPinia } from '@pinia/testing';
import { setActivePinia } from 'pinia';
import { fireEvent } from '@testing-library/vue';

View File

@ -1,6 +1,6 @@
import CanvasNodeStatusIcons from './CanvasNodeStatusIcons.vue';
import { createComponentRenderer } from '@/__tests__/render';
import { createCanvasNodeProvide, createCanvasProvide } from '@/__tests__/data';
import { createCanvasNodeProvide, createCanvasProvide } from '@/features/canvas/__tests__/utils';
import { createTestingPinia } from '@pinia/testing';
import { CanvasNodeDirtiness, CanvasNodeRenderType } from '../../../../../canvas.types';

View File

@ -1,7 +1,7 @@
import CanvasNodeTooltip from './CanvasNodeTooltip.vue';
import { createComponentRenderer } from '@/__tests__/render';
import type { CanvasNodeDefaultRender } from '../../../../../canvas.types';
import { createCanvasNodeProvide } from '@/__tests__/data';
import { createCanvasNodeProvide } from '@/features/canvas/__tests__/utils';
import { waitFor } from '@testing-library/vue';
const renderComponent = createComponentRenderer(CanvasNodeTooltip);

View File

@ -1,7 +1,7 @@
import { fireEvent } from '@testing-library/vue';
import CanvasNodeStickyColorSelector from './CanvasNodeStickyColorSelector.vue';
import { createComponentRenderer } from '@/__tests__/render';
import { createCanvasNodeProvide } from '@/__tests__/data';
import { createCanvasNodeProvide } from '@/features/canvas/__tests__/utils';
const renderComponent = createComponentRenderer(CanvasNodeStickyColorSelector);

View File

@ -1,6 +1,6 @@
import { useVueFlow, type GraphNode, type VueFlowStore } from '@vue-flow/core';
import { computed, ref } from 'vue';
import { createCanvasGraphEdge, createCanvasGraphNode } from '@/__tests__/data';
import { createCanvasGraphEdge, createCanvasGraphNode } from '@/features/canvas/__tests__/utils';
import { CanvasNodeRenderType, type CanvasNodeData } from '../canvas.types';
import { useCanvasLayout, type CanvasLayoutResult } from './useCanvasLayout';
import { STICKY_NODE_TYPE } from '@/constants';

View File

@ -7,7 +7,7 @@ import {
isSubNodeLog,
} from '@/features/logs/logs.utils';
import { useTelemetry } from '@/composables/useTelemetry';
import { canvasEventBus } from '@/event-bus/canvas';
import { canvasEventBus } from '@/features/canvas/canvas.eventBus';
import type { IExecutionResponse } from '@/Interface';
import { useCanvasStore } from '@/stores/canvas.store';
import { useLogsStore } from '@/stores/logs.store';

View File

@ -5,7 +5,7 @@ import { useCredentialsStore } from '@/stores/credentials.store';
import { useRootStore } from '@n8n/stores/useRootStore';
import { useCanvasOperations } from '@/composables/useCanvasOperations';
import { useActionsGenerator } from '@/components/Node/NodeCreator/composables/useActionsGeneration';
import { canvasEventBus } from '@/event-bus/canvas';
import { canvasEventBus } from '@/features/canvas/canvas.eventBus';
import { type CommandBarItem } from '@n8n/design-system/components/N8nCommandBar/types';
import { getNodeIcon, getNodeIconUrl } from '@/utils/nodeIcon';
import type { SimplifiedNodeType } from '@/Interface';

View File

@ -10,7 +10,7 @@ import { useTelemetry } from '@/composables/useTelemetry';
import { useWorkflowSaving } from '@/composables/useWorkflowSaving';
import { useRunWorkflow } from '@/composables/useRunWorkflow';
import { useWorkflowHelpers } from '@/composables/useWorkflowHelpers';
import { canvasEventBus } from '@/event-bus/canvas';
import { canvasEventBus } from '@/features/canvas/canvas.eventBus';
import { DUPLICATE_MODAL_KEY, EXECUTE_WORKFLOW_NODE_TYPE, VIEWS } from '@/constants';
import type { IWorkflowToShare } from '@/Interface';
import { saveAs } from 'file-saver';

View File

@ -129,7 +129,7 @@ import { useWorkflowExtraction } from '@/composables/useWorkflowExtraction';
import { useAgentRequestStore } from '@n8n/stores/useAgentRequestStore';
import { needsAgentInput } from '@/utils/nodes/nodeTransforms';
import { useLogsStore } from '@/stores/logs.store';
import { canvasEventBus } from '@/event-bus/canvas';
import { canvasEventBus } from '@/features/canvas/canvas.eventBus';
import CanvasChatButton from '@/features/canvas/components/elements/buttons/CanvasChatButton.vue';
import { useFocusPanelStore } from '@/stores/focusPanel.store';
import { useAITemplatesStarterCollectionStore } from '@/experiments/aiTemplatesStarterCollection/stores/aiTemplatesStarterCollection.store';