From 637115e243f19eaae59275905abe7f60d1d64dba Mon Sep 17 00:00:00 2001 From: Alex Grozav Date: Thu, 9 Oct 2025 14:40:29 +0300 Subject: [PATCH] refactor(editor): Extract `canvas` code into features (no-changelog) (#20541) --- .../editor-ui/src/__tests__/data/canvas.ts | 4 +- .../frontend/editor-ui/src/__tests__/mocks.ts | 2 +- .../AssignmentCollection.vue | 4 +- .../components/ExpressionParameterInput.vue | 2 +- .../src/components/FocusPanel.test.ts | 2 +- .../editor-ui/src/components/FocusPanel.vue | 8 +- .../editor-ui/src/components/InputPanel.vue | 2 +- .../editor-ui/src/components/NodeSettings.vue | 2 +- .../editor-ui/src/components/OutputPanel.vue | 2 +- .../src/components/ParameterInput.vue | 4 +- .../src/components/ParameterOptions.vue | 4 +- .../editor-ui/src/components/RunData.vue | 2 +- .../src/components/RunDataSearch.vue | 2 +- .../composables/useCanvasOperations.test.ts | 8 +- .../src/composables/useCanvasOperations.ts | 12 +- .../src/composables/useHistoryHelper.ts | 2 +- .../src/composables/useKeybindings.ts | 2 +- .../composables/useNodeConnections.test.ts | 6 +- .../src/composables/useNodeConnections.ts | 6 +- .../src/composables/useNodeDirtiness.test.ts | 2 +- .../src/composables/useNodeDirtiness.ts | 2 +- packages/frontend/editor-ui/src/constants.ts | 2 +- .../editor-ui/src/event-bus/canvas.ts | 2 +- .../components/Agent/ExecuteMessage.vue | 2 +- .../canvas/canvas.types.ts} | 4 +- .../canvas/canvas.utils.test.ts} | 6 +- .../canvas/canvas.utils.ts} | 4 +- .../canvas/components}/Canvas.test.ts | 4 +- .../canvas/components}/Canvas.vue | 16 +- .../canvas/components}/WorkflowCanvas.test.ts | 4 +- .../canvas/components}/WorkflowCanvas.vue | 8 +- .../background/CanvasBackground.test.ts | 2 +- .../elements/background/CanvasBackground.vue | 0 .../CanvasBackgroundStripedPattern.vue | 0 .../CanvasBackground.test.ts.snap | 0 .../elements/buttons/CanvasChatButton.test.ts | 0 .../elements/buttons/CanvasChatButton.vue | 0 .../CanvasClearExecutionDataButton.test.ts | 0 .../CanvasClearExecutionDataButton.vue | 0 .../buttons/CanvasControlButtons.test.ts | 0 .../elements/buttons/CanvasControlButtons.vue | 2 +- .../buttons/CanvasRunWorkflowButton.test.ts | 0 .../buttons/CanvasRunWorkflowButton.vue | 0 .../CanvasStopCurrentExecutionButton.test.ts | 0 .../CanvasStopCurrentExecutionButton.vue | 0 .../CanvasStopWaitingForWebhookButton.test.ts | 0 .../CanvasStopWaitingForWebhookButton.vue | 0 .../CanvasChatButton.test.ts.snap | 0 ...anvasClearExecutionDataButton.test.ts.snap | 0 .../CanvasControlButtons.test.ts.snap | 0 .../CanvasExecuteWorkflowButton.test.ts.snap | 0 .../CanvasRunWorkflowButton.test.ts.snap | 0 ...vasStopCurrentExecutionButton.test.ts.snap | 0 ...asStopWaitingForWebhookButton.test.ts.snap | 0 .../elements/edges/CanvasArrowHeadMarker.vue | 0 .../edges/CanvasConnectionLine.test.ts | 0 .../elements/edges/CanvasConnectionLine.vue | 4 +- .../elements/edges/CanvasEdge.test.ts | 2 +- .../components}/elements/edges/CanvasEdge.vue | 2 +- .../elements/edges/CanvasEdgeToolbar.test.ts | 0 .../elements/edges/CanvasEdgeToolbar.vue | 0 .../elements/edges/utils/getEdgeRenderData.ts | 0 .../components}/elements/edges/utils/index.ts | 0 .../handles/CanvasHandleRenderer.test.ts | 4 +- .../elements/handles/CanvasHandleRenderer.vue | 14 +- .../CanvasHandleMainInput.test.ts | 2 +- .../render-types/CanvasHandleMainInput.vue | 4 +- .../CanvasHandleMainOutput.test.ts | 2 +- .../render-types/CanvasHandleMainOutput.vue | 10 +- .../CanvasHandleNonMainInput.test.ts | 2 +- .../render-types/CanvasHandleNonMainInput.vue | 6 +- .../CanvasHandleNonMainOutput.test.ts | 2 +- .../CanvasHandleNonMainOutput.vue | 4 +- .../parts/CanvasHandleDiamond.test.ts | 0 .../parts/CanvasHandleDiamond.vue | 0 .../parts/CanvasHandleDot.test.ts | 0 .../render-types/parts/CanvasHandleDot.vue | 0 .../parts/CanvasHandlePlus.test.ts | 0 .../render-types/parts/CanvasHandlePlus.vue | 0 .../parts/CanvasHandleRectangle.test.ts | 0 .../parts/CanvasHandleRectangle.vue | 0 .../CanvasHandleDiamond.test.ts.snap | 0 .../CanvasHandleDot.test.ts.snap | 0 .../CanvasHandlePlus.test.ts.snap | 0 .../CanvasHandleRectangle.test.ts.snap | 0 .../elements/nodes/CanvasNode.test.ts | 4 +- .../components}/elements/nodes/CanvasNode.vue | 16 +- .../elements/nodes/CanvasNodeRenderer.test.ts | 4 +- .../elements/nodes/CanvasNodeRenderer.vue | 10 +- .../elements/nodes/CanvasNodeToolbar.test.ts | 4 +- .../elements/nodes/CanvasNodeToolbar.vue | 12 +- .../render-types/CanvasNodeAddNodes.test.ts | 0 .../nodes/render-types/CanvasNodeAddNodes.vue | 0 .../render-types/CanvasNodeChoicePrompt.vue | 0 .../render-types/CanvasNodeDefault.test.ts | 4 +- .../nodes/render-types/CanvasNodeDefault.vue | 16 +- .../render-types/CanvasNodeStickyNote.test.ts | 2 +- .../render-types/CanvasNodeStickyNote.vue | 4 +- .../CanvasNodeAddNodes.test.ts.snap | 0 .../CanvasNodeDefault.test.ts.snap | 0 .../CanvasNodeStickyNote.test.ts.snap | 0 .../CanvasNodeDisabledStrikeThrough.test.ts | 2 +- .../parts/CanvasNodeDisabledStrikeThrough.vue | 4 +- .../parts/CanvasNodeSettingsIcons.vue | 2 +- .../parts/CanvasNodeStatusIcons.test.ts | 2 +- .../parts/CanvasNodeStatusIcons.vue | 6 +- .../parts/CanvasNodeTooltip.test.ts | 2 +- .../render-types/parts/CanvasNodeTooltip.vue | 4 +- .../render-types/parts/CanvasNodeTrigger.vue | 0 .../CanvasNodeStickyColorSelector.test.ts | 2 +- .../toolbar/CanvasNodeStickyColorSelector.vue | 4 +- .../useCanvasLayout.test.ts.snap | 171 ++++++++++++++++++ .../canvas}/composables/useCanvas.ts | 0 .../composables/useCanvasLayout.test.ts | 8 +- .../canvas}/composables/useCanvasLayout.ts | 8 +- .../composables/useCanvasMapping.test.ts | 16 +- .../canvas}/composables/useCanvasMapping.ts | 12 +- .../canvas}/composables/useCanvasNode.test.ts | 6 +- .../canvas}/composables/useCanvasNode.ts | 4 +- .../composables/useCanvasNodeHandle.ts | 2 +- .../composables/useCanvasNodeHover.test.ts | 2 +- .../canvas}/composables/useCanvasNodeHover.ts | 2 +- .../composables/useCanvasTraversal.test.ts | 4 +- .../canvas}/composables/useCanvasTraversal.ts | 2 +- .../composables/useViewportAutoAdjust.test.ts | 0 .../composables/useViewportAutoAdjust.ts | 0 .../ExperimentalCanvasNodeSettings.vue | 0 .../ExperimentalEmbeddedNdvActions.vue | 0 .../ExperimentalEmbeddedNdvHeader.vue | 0 .../ExperimentalEmbeddedNdvMapper.test.ts | 0 .../ExperimentalEmbeddedNdvMapper.vue | 2 +- .../ExperimentalEmbeddedNodeDetails.vue | 8 +- .../ExperimentalFocusPanelHeader.vue | 0 .../ExperimentalNodeDetailsDrawer.test.ts | 0 .../ExperimentalNodeDetailsDrawer.vue | 2 +- .../composables/useExpressionResolveCtx.ts | 0 .../composables/useIsInExperimentalNdv.ts | 0 .../experimental/experimentalNdv.store.ts | 2 +- .../experimental/experimentalNdv.utils.ts | 0 .../logs/components/LogDetailsPanel.vue | 2 +- .../logs/components/LogsViewRunData.vue | 2 +- .../workflow-diff/HighlightedEdge.test.ts | 4 +- .../workflow-diff/HighlightedEdge.vue | 4 +- .../workflow-diff/SyncedWorkflowCanvas.vue | 6 +- .../workflow-diff/WorkflowDiffModal.vue | 2 +- .../workflow-diff/useWorkflowDiff.test.ts | 10 +- .../features/workflow-diff/useWorkflowDiff.ts | 4 +- .../src/stores/nodeCreator.store.test.ts | 6 +- .../editor-ui/src/stores/nodeCreator.store.ts | 4 +- .../frontend/editor-ui/src/types/index.ts | 1 - .../editor-ui/src/utils/nodeViewUtils.ts | 2 +- .../editor-ui/src/utils/typeGuards.ts | 4 +- .../frontend/editor-ui/src/views/NodeView.vue | 20 +- 153 files changed, 401 insertions(+), 219 deletions(-) rename packages/frontend/editor-ui/src/{types/canvas.ts => features/canvas/canvas.types.ts} (97%) rename packages/frontend/editor-ui/src/{utils/canvasUtils.test.ts => features/canvas/canvas.utils.test.ts} (99%) rename packages/frontend/editor-ui/src/{utils/canvasUtils.ts => features/canvas/canvas.utils.ts} (98%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/Canvas.test.ts (98%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/Canvas.vue (98%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/WorkflowCanvas.test.ts (97%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/WorkflowCanvas.vue (92%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/background/CanvasBackground.test.ts (91%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/background/CanvasBackground.vue (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/background/CanvasBackgroundStripedPattern.vue (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/background/__snapshots__/CanvasBackground.test.ts.snap (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/buttons/CanvasChatButton.test.ts (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/buttons/CanvasChatButton.vue (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/buttons/CanvasClearExecutionDataButton.test.ts (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/buttons/CanvasClearExecutionDataButton.vue (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/buttons/CanvasControlButtons.test.ts (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/buttons/CanvasControlButtons.vue (97%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/buttons/CanvasRunWorkflowButton.test.ts (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/buttons/CanvasRunWorkflowButton.vue (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/buttons/CanvasStopCurrentExecutionButton.test.ts (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/buttons/CanvasStopCurrentExecutionButton.vue (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/buttons/CanvasStopWaitingForWebhookButton.test.ts (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/buttons/CanvasStopWaitingForWebhookButton.vue (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/buttons/__snapshots__/CanvasChatButton.test.ts.snap (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/buttons/__snapshots__/CanvasClearExecutionDataButton.test.ts.snap (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/buttons/__snapshots__/CanvasControlButtons.test.ts.snap (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/buttons/__snapshots__/CanvasExecuteWorkflowButton.test.ts.snap (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/buttons/__snapshots__/CanvasRunWorkflowButton.test.ts.snap (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/buttons/__snapshots__/CanvasStopCurrentExecutionButton.test.ts.snap (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/buttons/__snapshots__/CanvasStopWaitingForWebhookButton.test.ts.snap (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/edges/CanvasArrowHeadMarker.vue (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/edges/CanvasConnectionLine.test.ts (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/edges/CanvasConnectionLine.vue (93%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/edges/CanvasEdge.test.ts (98%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/edges/CanvasEdge.vue (98%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/edges/CanvasEdgeToolbar.test.ts (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/edges/CanvasEdgeToolbar.vue (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/edges/utils/getEdgeRenderData.ts (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/edges/utils/index.ts (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/handles/CanvasHandleRenderer.test.ts (95%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/handles/CanvasHandleRenderer.vue (89%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/handles/render-types/CanvasHandleMainInput.test.ts (84%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/handles/render-types/CanvasHandleMainInput.vue (85%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/handles/render-types/CanvasHandleMainOutput.test.ts (95%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/handles/render-types/CanvasHandleMainOutput.vue (90%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/handles/render-types/CanvasHandleNonMainInput.test.ts (83%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/handles/render-types/CanvasHandleNonMainInput.vue (88%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/handles/render-types/CanvasHandleNonMainOutput.test.ts (83%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/handles/render-types/CanvasHandleNonMainOutput.vue (85%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/handles/render-types/parts/CanvasHandleDiamond.test.ts (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/handles/render-types/parts/CanvasHandleDiamond.vue (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/handles/render-types/parts/CanvasHandleDot.test.ts (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/handles/render-types/parts/CanvasHandleDot.vue (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/handles/render-types/parts/CanvasHandlePlus.test.ts (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/handles/render-types/parts/CanvasHandlePlus.vue (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/handles/render-types/parts/CanvasHandleRectangle.test.ts (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/handles/render-types/parts/CanvasHandleRectangle.vue (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/handles/render-types/parts/__snapshots__/CanvasHandleDiamond.test.ts.snap (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/handles/render-types/parts/__snapshots__/CanvasHandleDot.test.ts.snap (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/handles/render-types/parts/__snapshots__/CanvasHandlePlus.test.ts.snap (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/handles/render-types/parts/__snapshots__/CanvasHandleRectangle.test.ts.snap (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/nodes/CanvasNode.test.ts (97%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/nodes/CanvasNode.vue (94%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/nodes/CanvasNodeRenderer.test.ts (93%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/nodes/CanvasNodeRenderer.vue (60%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/nodes/CanvasNodeToolbar.test.ts (97%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/nodes/CanvasNodeToolbar.vue (91%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/nodes/render-types/CanvasNodeAddNodes.test.ts (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/nodes/render-types/CanvasNodeAddNodes.vue (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/nodes/render-types/CanvasNodeChoicePrompt.vue (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/nodes/render-types/CanvasNodeDefault.test.ts (98%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/nodes/render-types/CanvasNodeDefault.vue (91%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/nodes/render-types/CanvasNodeStickyNote.test.ts (96%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/nodes/render-types/CanvasNodeStickyNote.vue (95%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/nodes/render-types/__snapshots__/CanvasNodeAddNodes.test.ts.snap (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/nodes/render-types/__snapshots__/CanvasNodeDefault.test.ts.snap (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/nodes/render-types/__snapshots__/CanvasNodeStickyNote.test.ts.snap (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/nodes/render-types/parts/CanvasNodeDisabledStrikeThrough.test.ts (72%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/nodes/render-types/parts/CanvasNodeDisabledStrikeThrough.vue (85%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/nodes/render-types/parts/CanvasNodeSettingsIcons.vue (97%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/nodes/render-types/parts/CanvasNodeStatusIcons.test.ts (98%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/nodes/render-types/parts/CanvasNodeStatusIcons.vue (95%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/nodes/render-types/parts/CanvasNodeTooltip.test.ts (94%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/nodes/render-types/parts/CanvasNodeTooltip.vue (85%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/nodes/render-types/parts/CanvasNodeTrigger.vue (100%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/nodes/toolbar/CanvasNodeStickyColorSelector.test.ts (90%) rename packages/frontend/editor-ui/src/{components/canvas => features/canvas/components}/elements/nodes/toolbar/CanvasNodeStickyColorSelector.vue (95%) create mode 100644 packages/frontend/editor-ui/src/features/canvas/composables/__snapshots__/useCanvasLayout.test.ts.snap rename packages/frontend/editor-ui/src/{ => features/canvas}/composables/useCanvas.ts (100%) rename packages/frontend/editor-ui/src/{ => features/canvas}/composables/useCanvasLayout.test.ts (97%) rename packages/frontend/editor-ui/src/{ => features/canvas}/composables/useCanvasLayout.ts (99%) rename packages/frontend/editor-ui/src/{ => features/canvas}/composables/useCanvasMapping.test.ts (99%) rename packages/frontend/editor-ui/src/{ => features/canvas}/composables/useCanvasMapping.ts (98%) rename packages/frontend/editor-ui/src/{ => features/canvas}/composables/useCanvasNode.test.ts (96%) rename packages/frontend/editor-ui/src/{ => features/canvas}/composables/useCanvasNode.ts (95%) rename packages/frontend/editor-ui/src/{ => features/canvas}/composables/useCanvasNodeHandle.ts (95%) rename packages/frontend/editor-ui/src/{ => features/canvas}/composables/useCanvasNodeHover.test.ts (98%) rename packages/frontend/editor-ui/src/{ => features/canvas}/composables/useCanvasNodeHover.ts (97%) rename packages/frontend/editor-ui/src/{ => features/canvas}/composables/useCanvasTraversal.test.ts (97%) rename packages/frontend/editor-ui/src/{ => features/canvas}/composables/useCanvasTraversal.ts (97%) rename packages/frontend/editor-ui/src/{components => features}/canvas/composables/useViewportAutoAdjust.test.ts (100%) rename packages/frontend/editor-ui/src/{components => features}/canvas/composables/useViewportAutoAdjust.ts (100%) rename packages/frontend/editor-ui/src/{components => features}/canvas/experimental/components/ExperimentalCanvasNodeSettings.vue (100%) rename packages/frontend/editor-ui/src/{components => features}/canvas/experimental/components/ExperimentalEmbeddedNdvActions.vue (100%) rename packages/frontend/editor-ui/src/{components => features}/canvas/experimental/components/ExperimentalEmbeddedNdvHeader.vue (100%) rename packages/frontend/editor-ui/src/{components => features}/canvas/experimental/components/ExperimentalEmbeddedNdvMapper.test.ts (100%) rename packages/frontend/editor-ui/src/{components => features}/canvas/experimental/components/ExperimentalEmbeddedNdvMapper.vue (97%) rename packages/frontend/editor-ui/src/{components => features}/canvas/experimental/components/ExperimentalEmbeddedNodeDetails.vue (93%) rename packages/frontend/editor-ui/src/{components => features}/canvas/experimental/components/ExperimentalFocusPanelHeader.vue (100%) rename packages/frontend/editor-ui/src/{components => features}/canvas/experimental/components/ExperimentalNodeDetailsDrawer.test.ts (100%) rename packages/frontend/editor-ui/src/{components => features}/canvas/experimental/components/ExperimentalNodeDetailsDrawer.vue (96%) rename packages/frontend/editor-ui/src/{components => features}/canvas/experimental/composables/useExpressionResolveCtx.ts (100%) rename packages/frontend/editor-ui/src/{components => features}/canvas/experimental/composables/useIsInExperimentalNdv.ts (100%) rename packages/frontend/editor-ui/src/{components => features}/canvas/experimental/experimentalNdv.store.ts (98%) rename packages/frontend/editor-ui/src/{components => features}/canvas/experimental/experimentalNdv.utils.ts (100%) diff --git a/packages/frontend/editor-ui/src/__tests__/data/canvas.ts b/packages/frontend/editor-ui/src/__tests__/data/canvas.ts index f70bd10ebbb..0a17b727001 100644 --- a/packages/frontend/editor-ui/src/__tests__/data/canvas.ts +++ b/packages/frontend/editor-ui/src/__tests__/data/canvas.ts @@ -9,8 +9,8 @@ import type { CanvasNodeInjectionData, ConnectStartEvent, ExecutionOutputMapData, -} from '@/types'; -import { CanvasConnectionMode, CanvasNodeRenderType } from '@/types'; +} from '@/features/canvas/canvas.types'; +import { CanvasConnectionMode, CanvasNodeRenderType } from '@/features/canvas/canvas.types'; import type { NodeConnectionType } from 'n8n-workflow'; import { NodeConnectionTypes } from 'n8n-workflow'; import type { GraphEdge, GraphNode, ViewportTransform } from '@vue-flow/core'; diff --git a/packages/frontend/editor-ui/src/__tests__/mocks.ts b/packages/frontend/editor-ui/src/__tests__/mocks.ts index 478d03f8dc7..a9fc336bd96 100644 --- a/packages/frontend/editor-ui/src/__tests__/mocks.ts +++ b/packages/frontend/editor-ui/src/__tests__/mocks.ts @@ -29,7 +29,7 @@ import { STICKY_NODE_TYPE, } from '@/constants'; import type { IExecutionResponse, INodeUi, IWorkflowDb } from '@/Interface'; -import { CanvasNodeRenderType } from '@/types'; +import { CanvasNodeRenderType } from '@/features/canvas/canvas.types'; import type { FrontendSettings } from '@n8n/api-types'; import type { ExpressionLocalResolveContext } from '@/types/expressions'; diff --git a/packages/frontend/editor-ui/src/components/AssignmentCollection/AssignmentCollection.vue b/packages/frontend/editor-ui/src/components/AssignmentCollection/AssignmentCollection.vue index 0201ba00fa2..108f256aff9 100644 --- a/packages/frontend/editor-ui/src/components/AssignmentCollection/AssignmentCollection.vue +++ b/packages/frontend/editor-ui/src/components/AssignmentCollection/AssignmentCollection.vue @@ -16,9 +16,9 @@ import Assignment from './Assignment.vue'; import { inputDataToAssignments, typeFromExpression } from './utils'; import { propertyNameFromExpression } from '@/utils/mappingUtils'; import Draggable from 'vuedraggable'; -import ExperimentalEmbeddedNdvMapper from '@/components/canvas/experimental/components/ExperimentalEmbeddedNdvMapper.vue'; +import ExperimentalEmbeddedNdvMapper from '@/features/canvas/experimental/components/ExperimentalEmbeddedNdvMapper.vue'; import { ExpressionLocalResolveContextSymbol } from '@/constants'; -import { useExperimentalNdvStore } from '@/components/canvas/experimental/experimentalNdv.store'; +import { useExperimentalNdvStore } from '@/features/canvas/experimental/experimentalNdv.store'; import { N8nInputLabel } from '@n8n/design-system'; interface Props { diff --git a/packages/frontend/editor-ui/src/components/ExpressionParameterInput.vue b/packages/frontend/editor-ui/src/components/ExpressionParameterInput.vue index 474a2eabaea..8fd1892c247 100644 --- a/packages/frontend/editor-ui/src/components/ExpressionParameterInput.vue +++ b/packages/frontend/editor-ui/src/components/ExpressionParameterInput.vue @@ -18,7 +18,7 @@ import type { EditorState, SelectionRange } from '@codemirror/state'; import type { IDataObject } from 'n8n-workflow'; import { createEventBus, type EventBus } from '@n8n/utils/event-bus'; import { CanvasKey } from '@/constants'; -import { useIsInExperimentalNdv } from '@/components/canvas/experimental/composables/useIsInExperimentalNdv'; +import { useIsInExperimentalNdv } from '@/features/canvas/experimental/composables/useIsInExperimentalNdv'; import { isEventTargetContainedBy } from '@/utils/htmlUtils'; import { N8nButton } from '@n8n/design-system'; diff --git a/packages/frontend/editor-ui/src/components/FocusPanel.test.ts b/packages/frontend/editor-ui/src/components/FocusPanel.test.ts index 66240d1bb3b..9d79c84a929 100644 --- a/packages/frontend/editor-ui/src/components/FocusPanel.test.ts +++ b/packages/frontend/editor-ui/src/components/FocusPanel.test.ts @@ -11,7 +11,7 @@ import { useVueFlow } from '@vue-flow/core'; import type { INodeProperties } from 'n8n-workflow'; import { setActivePinia } from 'pinia'; import { reactive } from 'vue'; -import { useExperimentalNdvStore } from './canvas/experimental/experimentalNdv.store'; +import { useExperimentalNdvStore } from '@/features/canvas/experimental/experimentalNdv.store'; import FocusPanel from './FocusPanel.vue'; vi.mock('vue-router', () => ({ diff --git a/packages/frontend/editor-ui/src/components/FocusPanel.vue b/packages/frontend/editor-ui/src/components/FocusPanel.vue index 8c968e377d0..cb5a878218f 100644 --- a/packages/frontend/editor-ui/src/components/FocusPanel.vue +++ b/packages/frontend/editor-ui/src/components/FocusPanel.vue @@ -40,14 +40,14 @@ import { useTelemetry } from '@/composables/useTelemetry'; import { useActiveElement, useThrottleFn } from '@vueuse/core'; import { useExecutionData } from '@/composables/useExecutionData'; import { useWorkflowsStore } from '@/stores/workflows.store'; -import ExperimentalNodeDetailsDrawer from '@/components/canvas/experimental/components/ExperimentalNodeDetailsDrawer.vue'; -import { useExperimentalNdvStore } from '@/components/canvas/experimental/experimentalNdv.store'; +import ExperimentalNodeDetailsDrawer from '@/features/canvas/experimental/components/ExperimentalNodeDetailsDrawer.vue'; +import { useExperimentalNdvStore } from '@/features/canvas/experimental/experimentalNdv.store'; import { useNDVStore } from '@/stores/ndv.store'; import { useVueFlow } from '@vue-flow/core'; -import ExperimentalFocusPanelHeader from '@/components/canvas/experimental/components/ExperimentalFocusPanelHeader.vue'; +import ExperimentalFocusPanelHeader from '@/features/canvas/experimental/components/ExperimentalFocusPanelHeader.vue'; import { useTelemetryContext } from '@/composables/useTelemetryContext'; import { type ContextMenuAction } from '@/composables/useContextMenuItems'; -import { type CanvasNode, CanvasNodeRenderType } from '@/types'; +import { type CanvasNode, CanvasNodeRenderType } from '@/features/canvas/canvas.types'; import { useCanvasOperations } from '@/composables/useCanvasOperations'; import { diff --git a/packages/frontend/editor-ui/src/components/InputPanel.vue b/packages/frontend/editor-ui/src/components/InputPanel.vue index 72e46f7bd62..68c01768cb9 100644 --- a/packages/frontend/editor-ui/src/components/InputPanel.vue +++ b/packages/frontend/editor-ui/src/components/InputPanel.vue @@ -29,7 +29,7 @@ import WireMeUp from './WireMeUp.vue'; import { usePostHog } from '@/stores/posthog.store'; import { type IRunDataDisplayMode } from '@/Interface'; import { I18nT } from 'vue-i18n'; -import { type SearchShortcut } from '@/types'; +import { type SearchShortcut } from '@/features/canvas/canvas.types'; import { useRouter } from 'vue-router'; import { useRunWorkflow } from '@/composables/useRunWorkflow'; diff --git a/packages/frontend/editor-ui/src/components/NodeSettings.vue b/packages/frontend/editor-ui/src/components/NodeSettings.vue index a6d4ee314fe..f97486d42ee 100644 --- a/packages/frontend/editor-ui/src/components/NodeSettings.vue +++ b/packages/frontend/editor-ui/src/components/NodeSettings.vue @@ -24,7 +24,7 @@ import NodeWebhooks from '@/components/NodeWebhooks.vue'; import ParameterInputList from '@/components/ParameterInputList.vue'; import get from 'lodash/get'; -import ExperimentalEmbeddedNdvHeader from '@/components/canvas/experimental/components/ExperimentalEmbeddedNdvHeader.vue'; +import ExperimentalEmbeddedNdvHeader from '@/features/canvas/experimental/components/ExperimentalEmbeddedNdvHeader.vue'; import FreeAiCreditsCallout from '@/components/FreeAiCreditsCallout.vue'; import NodeActionsList from '@/components/NodeActionsList.vue'; import NodeSettingsInvalidNodeWarning from '@/components/NodeSettingsInvalidNodeWarning.vue'; diff --git a/packages/frontend/editor-ui/src/components/OutputPanel.vue b/packages/frontend/editor-ui/src/components/OutputPanel.vue index 25f0ce96c28..4044f84d77b 100644 --- a/packages/frontend/editor-ui/src/components/OutputPanel.vue +++ b/packages/frontend/editor-ui/src/components/OutputPanel.vue @@ -14,7 +14,7 @@ import { useTelemetry } from '@/composables/useTelemetry'; import { useI18n } from '@n8n/i18n'; import { waitingNodeTooltip } from '@/utils/executionUtils'; import { useNodeDirtiness } from '@/composables/useNodeDirtiness'; -import { CanvasNodeDirtiness } from '@/types'; +import { CanvasNodeDirtiness } from '@/features/canvas/canvas.types'; import { NDV_UI_OVERHAUL_EXPERIMENT } from '@/constants'; import { usePostHog } from '@/stores/posthog.store'; import { type IRunDataDisplayMode } from '@/Interface'; diff --git a/packages/frontend/editor-ui/src/components/ParameterInput.vue b/packages/frontend/editor-ui/src/components/ParameterInput.vue index a007342cdff..e188f5f51c7 100644 --- a/packages/frontend/editor-ui/src/components/ParameterInput.vue +++ b/packages/frontend/editor-ui/src/components/ParameterInput.vue @@ -91,8 +91,8 @@ import { import { completeExpressionSyntax, shouldConvertToExpression } from '@/utils/expressions'; import CssEditor from '@/features/editors/components/CssEditor/CssEditor.vue'; import { useFocusPanelStore } from '@/stores/focusPanel.store'; -import ExperimentalEmbeddedNdvMapper from '@/components/canvas/experimental/components/ExperimentalEmbeddedNdvMapper.vue'; -import { useExperimentalNdvStore } from '@/components/canvas/experimental/experimentalNdv.store'; +import ExperimentalEmbeddedNdvMapper from '@/features/canvas/experimental/components/ExperimentalEmbeddedNdvMapper.vue'; +import { useExperimentalNdvStore } from '@/features/canvas/experimental/experimentalNdv.store'; import { useProjectsStore } from '@/stores/projects.store'; import { getParameterDisplayableOptions } from '@/utils/nodes/nodeTransforms'; diff --git a/packages/frontend/editor-ui/src/components/ParameterOptions.vue b/packages/frontend/editor-ui/src/components/ParameterOptions.vue index 79b28ef7970..24646175216 100644 --- a/packages/frontend/editor-ui/src/components/ParameterOptions.vue +++ b/packages/frontend/editor-ui/src/components/ParameterOptions.vue @@ -10,8 +10,8 @@ import { computed } from 'vue'; import { useNDVStore } from '@/stores/ndv.store'; import { AI_TRANSFORM_NODE_TYPE } from '@/constants'; import { getParameterTypeOption } from '@/utils/nodeSettingsUtils'; -import { useIsInExperimentalNdv } from '@/components/canvas/experimental/composables/useIsInExperimentalNdv'; -import { useExperimentalNdvStore } from '@/components/canvas/experimental/experimentalNdv.store'; +import { useIsInExperimentalNdv } from '@/features/canvas/experimental/composables/useIsInExperimentalNdv'; +import { useExperimentalNdvStore } from '@/features/canvas/experimental/experimentalNdv.store'; import { N8nActionToggle, N8nIcon, N8nRadioButtons, N8nText, N8nTooltip } from '@n8n/design-system'; interface Props { diff --git a/packages/frontend/editor-ui/src/components/RunData.vue b/packages/frontend/editor-ui/src/components/RunData.vue index 36769220e5a..969eb124db3 100644 --- a/packages/frontend/editor-ui/src/components/RunData.vue +++ b/packages/frontend/editor-ui/src/components/RunData.vue @@ -75,7 +75,7 @@ import { I18nT } from 'vue-i18n'; import RunDataBinary from '@/components/RunDataBinary.vue'; import { hasTrimmedRunData } from '@/utils/executionUtils'; import NDVEmptyState from '@/components/NDVEmptyState.vue'; -import { type SearchShortcut } from '@/types'; +import { type SearchShortcut } from '@/features/canvas/canvas.types'; import { N8nBlockUi, diff --git a/packages/frontend/editor-ui/src/components/RunDataSearch.vue b/packages/frontend/editor-ui/src/components/RunDataSearch.vue index 479e6e7995a..ebb8a1f3103 100644 --- a/packages/frontend/editor-ui/src/components/RunDataSearch.vue +++ b/packages/frontend/editor-ui/src/components/RunDataSearch.vue @@ -6,7 +6,7 @@ import { useDebounce } from '@/composables/useDebounce'; import { useDeviceSupport } from '@n8n/composables/useDeviceSupport'; import { useEventListener } from '@vueuse/core'; import { PopOutWindowKey } from '@/constants'; -import { type SearchShortcut } from '@/types'; +import { type SearchShortcut } from '@/features/canvas/canvas.types'; import { N8nIcon, N8nInput } from '@n8n/design-system'; type Props = { diff --git a/packages/frontend/editor-ui/src/composables/useCanvasOperations.test.ts b/packages/frontend/editor-ui/src/composables/useCanvasOperations.test.ts index 842c1bddfc8..e7169f353a3 100644 --- a/packages/frontend/editor-ui/src/composables/useCanvasOperations.test.ts +++ b/packages/frontend/editor-ui/src/composables/useCanvasOperations.test.ts @@ -8,8 +8,8 @@ import type { WorkflowExecuteMode, } from 'n8n-workflow'; import { NodeConnectionTypes, NodeHelpers, UserError } from 'n8n-workflow'; -import type { CanvasConnection, CanvasNode } from '@/types'; -import { CanvasConnectionMode } from '@/types'; +import type { CanvasConnection, CanvasNode } from '@/features/canvas/canvas.types'; +import { CanvasConnectionMode } from '@/features/canvas/canvas.types'; import type { ICredentialsResponse, IExecutionResponse, @@ -50,9 +50,9 @@ import { import { STORES } from '@n8n/stores'; import type { Connection } from '@vue-flow/core'; import { useClipboard } from '@/composables/useClipboard'; -import { createCanvasConnectionHandleString } from '@/utils/canvasUtils'; +import { createCanvasConnectionHandleString } from '@/features/canvas/canvas.utils'; import { nextTick, reactive, ref } from 'vue'; -import type { CanvasLayoutEvent } from './useCanvasLayout'; +import type { CanvasLayoutEvent } from '@/features/canvas/composables/useCanvasLayout'; import { useTelemetry } from './useTelemetry'; import { useToast } from '@/composables/useToast'; import * as nodeHelpers from '@/composables/useNodeHelpers'; diff --git a/packages/frontend/editor-ui/src/composables/useCanvasOperations.ts b/packages/frontend/editor-ui/src/composables/useCanvasOperations.ts index f28a8c0bc06..9e4f2d5389d 100644 --- a/packages/frontend/editor-ui/src/composables/useCanvasOperations.ts +++ b/packages/frontend/editor-ui/src/composables/useCanvasOperations.ts @@ -63,15 +63,15 @@ import type { CanvasNode, CanvasNodeMoveEvent, ViewportBoundaries, -} from '@/types'; -import { CanvasConnectionMode } from '@/types'; +} from '@/features/canvas/canvas.types'; +import { CanvasConnectionMode } from '@/features/canvas/canvas.types'; import { createCanvasConnectionHandleString, mapCanvasConnectionToLegacyConnection, mapLegacyConnectionsToCanvasConnections, mapLegacyConnectionToCanvasConnection, parseCanvasConnectionHandleString, -} from '@/utils/canvasUtils'; +} from '@/features/canvas/canvas.utils'; import * as NodeViewUtils from '@/utils/nodeViewUtils'; import { GRID_SIZE, @@ -108,15 +108,15 @@ import { computed, nextTick, ref } from 'vue'; import { useClipboard } from '@/composables/useClipboard'; import { useUniqueNodeName } from '@/composables/useUniqueNodeName'; import { injectWorkflowState } from '@/composables/useWorkflowState'; -import { isPresent } from '../utils/typesUtils'; +import { isPresent } from '@/utils/typesUtils'; import { useProjectsStore } from '@/stores/projects.store'; -import type { CanvasLayoutEvent } from './useCanvasLayout'; +import type { CanvasLayoutEvent } from '@/features/canvas/composables/useCanvasLayout'; import { chatEventBus } from '@n8n/chat/event-buses'; import { useLogsStore } from '@/stores/logs.store'; import { isChatNode } from '@/utils/aiUtils'; import cloneDeep from 'lodash/cloneDeep'; import uniq from 'lodash/uniq'; -import { useExperimentalNdvStore } from '@/components/canvas/experimental/experimentalNdv.store'; +import { useExperimentalNdvStore } from '@/features/canvas/experimental/experimentalNdv.store'; import { canvasEventBus } from '@/event-bus/canvas'; import { useFocusPanelStore } from '@/stores/focusPanel.store'; import type { TelemetryNdvSource, TelemetryNdvType } from '@/types/telemetry'; diff --git a/packages/frontend/editor-ui/src/composables/useHistoryHelper.ts b/packages/frontend/editor-ui/src/composables/useHistoryHelper.ts index e47fdd0ed34..3f0b5121a77 100644 --- a/packages/frontend/editor-ui/src/composables/useHistoryHelper.ts +++ b/packages/frontend/editor-ui/src/composables/useHistoryHelper.ts @@ -11,7 +11,7 @@ import { getNodeViewTab } from '@/utils/nodeViewUtils'; import type { RouteLocationNormalizedLoaded } from 'vue-router'; import { useTelemetry } from './useTelemetry'; import { useDebounce } from '@/composables/useDebounce'; -import { shouldIgnoreCanvasShortcut } from '@/utils/canvasUtils'; +import { shouldIgnoreCanvasShortcut } from '@/features/canvas/canvas.utils'; const UNDO_REDO_DEBOUNCE_INTERVAL = 100; const ELEMENT_UI_OVERLAY_SELECTOR = '.el-overlay'; diff --git a/packages/frontend/editor-ui/src/composables/useKeybindings.ts b/packages/frontend/editor-ui/src/composables/useKeybindings.ts index 373b2a21106..f495ab8bc92 100644 --- a/packages/frontend/editor-ui/src/composables/useKeybindings.ts +++ b/packages/frontend/editor-ui/src/composables/useKeybindings.ts @@ -1,5 +1,5 @@ import { PopOutWindowKey } from '@/constants'; -import { shouldIgnoreCanvasShortcut } from '@/utils/canvasUtils'; +import { shouldIgnoreCanvasShortcut } from '@/features/canvas/canvas.utils'; import { useDeviceSupport } from '@n8n/composables/useDeviceSupport'; import { useActiveElement, useEventListener } from '@vueuse/core'; import type { MaybeRefOrGetter } from 'vue'; diff --git a/packages/frontend/editor-ui/src/composables/useNodeConnections.test.ts b/packages/frontend/editor-ui/src/composables/useNodeConnections.test.ts index 7d355ca81ca..e828e1c79de 100644 --- a/packages/frontend/editor-ui/src/composables/useNodeConnections.test.ts +++ b/packages/frontend/editor-ui/src/composables/useNodeConnections.test.ts @@ -1,9 +1,9 @@ import { ref } from 'vue'; import { NodeConnectionTypes } from 'n8n-workflow'; import { useNodeConnections } from '@/composables/useNodeConnections'; -import type { CanvasNodeData } from '@/types'; -import { CanvasConnectionMode } from '@/types'; -import { createCanvasConnectionHandleString } from '@/utils/canvasUtils'; +import type { CanvasNodeData } from '@/features/canvas/canvas.types'; +import { CanvasConnectionMode } from '@/features/canvas/canvas.types'; +import { createCanvasConnectionHandleString } from '@/features/canvas/canvas.utils'; describe('useNodeConnections', () => { const defaultConnections = { diff --git a/packages/frontend/editor-ui/src/composables/useNodeConnections.ts b/packages/frontend/editor-ui/src/composables/useNodeConnections.ts index 16fc89b65b2..5bee24dbf89 100644 --- a/packages/frontend/editor-ui/src/composables/useNodeConnections.ts +++ b/packages/frontend/editor-ui/src/composables/useNodeConnections.ts @@ -1,10 +1,10 @@ -import type { CanvasNodeData } from '@/types'; -import { CanvasConnectionMode } from '@/types'; +import type { CanvasNodeData } from '@/features/canvas/canvas.types'; +import { CanvasConnectionMode } from '@/features/canvas/canvas.types'; import type { MaybeRef } from 'vue'; import { computed, unref } from 'vue'; import { NodeConnectionTypes } from 'n8n-workflow'; import type { Connection } from '@vue-flow/core'; -import { parseCanvasConnectionHandleString } from '@/utils/canvasUtils'; +import { parseCanvasConnectionHandleString } from '@/features/canvas/canvas.utils'; export function useNodeConnections({ inputs, diff --git a/packages/frontend/editor-ui/src/composables/useNodeDirtiness.test.ts b/packages/frontend/editor-ui/src/composables/useNodeDirtiness.test.ts index a7c03d6c85b..4b626ed6eb2 100644 --- a/packages/frontend/editor-ui/src/composables/useNodeDirtiness.test.ts +++ b/packages/frontend/editor-ui/src/composables/useNodeDirtiness.test.ts @@ -8,7 +8,7 @@ import { type INodeUi } from '@/Interface'; import { useNodeTypesStore } from '@/stores/nodeTypes.store'; import { useUIStore } from '@/stores/ui.store'; import { useWorkflowsStore } from '@/stores/workflows.store'; -import { CanvasNodeDirtiness } from '@/types'; +import { CanvasNodeDirtiness } from '@/features/canvas/canvas.types'; import { createTestingPinia } from '@pinia/testing'; import { NodeConnectionTypes, type IConnections, type IRunData } from 'n8n-workflow'; import { defineComponent } from 'vue'; diff --git a/packages/frontend/editor-ui/src/composables/useNodeDirtiness.ts b/packages/frontend/editor-ui/src/composables/useNodeDirtiness.ts index a47cbbd54de..40e81303e00 100644 --- a/packages/frontend/editor-ui/src/composables/useNodeDirtiness.ts +++ b/packages/frontend/editor-ui/src/composables/useNodeDirtiness.ts @@ -9,7 +9,7 @@ import { } from '@/models/history'; import { useHistoryStore } from '@/stores/history.store'; import { useWorkflowsStore } from '@/stores/workflows.store'; -import { CanvasNodeDirtiness, type CanvasNodeDirtinessType } from '@/types'; +import { CanvasNodeDirtiness, type CanvasNodeDirtinessType } from '@/features/canvas/canvas.types'; import type { INodeConnections, NodeConnectionType } from 'n8n-workflow'; import { NodeConnectionTypes } from 'n8n-workflow'; import { computed } from 'vue'; diff --git a/packages/frontend/editor-ui/src/constants.ts b/packages/frontend/editor-ui/src/constants.ts index 548f447667e..40cbd20db65 100644 --- a/packages/frontend/editor-ui/src/constants.ts +++ b/packages/frontend/editor-ui/src/constants.ts @@ -9,7 +9,7 @@ import type { CanvasInjectionData, CanvasNodeHandleInjectionData, CanvasNodeInjectionData, -} from '@/types'; +} from '@/features/canvas/canvas.types'; import type { ComputedRef, InjectionKey, Ref } from 'vue'; import type { ExpressionLocalResolveContext } from './types/expressions'; import { DATA_TABLE_MODULE_NAME } from './features/dataTable/constants'; diff --git a/packages/frontend/editor-ui/src/event-bus/canvas.ts b/packages/frontend/editor-ui/src/event-bus/canvas.ts index ca8ff3f359c..b8bfc1e703e 100644 --- a/packages/frontend/editor-ui/src/event-bus/canvas.ts +++ b/packages/frontend/editor-ui/src/event-bus/canvas.ts @@ -1,4 +1,4 @@ -import type { CanvasEventBusEvents } from '@/types'; +import type { CanvasEventBusEvents } from '@/features/canvas/canvas.types'; import { createEventBus } from '@n8n/utils/event-bus'; export const canvasEventBus = createEventBus(); diff --git a/packages/frontend/editor-ui/src/features/assistant/components/Agent/ExecuteMessage.vue b/packages/frontend/editor-ui/src/features/assistant/components/Agent/ExecuteMessage.vue index 2e127a35071..6ff8b7b6661 100644 --- a/packages/frontend/editor-ui/src/features/assistant/components/Agent/ExecuteMessage.vue +++ b/packages/frontend/editor-ui/src/features/assistant/components/Agent/ExecuteMessage.vue @@ -9,7 +9,7 @@ import { computed, onBeforeUnmount, onMounted, ref, watch, type WatchStopHandle import { useRouter } from 'vue-router'; import NodeIssueItem from './NodeIssueItem.vue'; -import CanvasRunWorkflowButton from '@/components/canvas/elements/buttons/CanvasRunWorkflowButton.vue'; +import CanvasRunWorkflowButton from '@/features/canvas/components/elements/buttons/CanvasRunWorkflowButton.vue'; import { useLogsStore } from '@/stores/logs.store'; import { isChatNode } from '@/utils/aiUtils'; import { useToast } from '@/composables/useToast'; diff --git a/packages/frontend/editor-ui/src/types/canvas.ts b/packages/frontend/editor-ui/src/features/canvas/canvas.types.ts similarity index 97% rename from packages/frontend/editor-ui/src/types/canvas.ts rename to packages/frontend/editor-ui/src/features/canvas/canvas.types.ts index 098c6891c7b..cabf790bfb4 100644 --- a/packages/frontend/editor-ui/src/types/canvas.ts +++ b/packages/frontend/editor-ui/src/features/canvas/canvas.types.ts @@ -10,8 +10,8 @@ import type { import type { IExecutionResponse, INodeUi } from '@/Interface'; import type { ComputedRef, Ref } from 'vue'; import type { EventBus } from '@n8n/utils/event-bus'; -import type { CanvasLayoutSource } from '@/composables/useCanvasLayout'; -import type { NodeIconSource } from '../utils/nodeIcon'; +import type { CanvasLayoutSource } from '@/features/canvas/composables/useCanvasLayout'; +import type { NodeIconSource } from '@/utils/nodeIcon'; export const enum CanvasConnectionMode { Input = 'inputs', diff --git a/packages/frontend/editor-ui/src/utils/canvasUtils.test.ts b/packages/frontend/editor-ui/src/features/canvas/canvas.utils.test.ts similarity index 99% rename from packages/frontend/editor-ui/src/utils/canvasUtils.test.ts rename to packages/frontend/editor-ui/src/features/canvas/canvas.utils.test.ts index 241bd9f4622..b69868b90af 100644 --- a/packages/frontend/editor-ui/src/utils/canvasUtils.test.ts +++ b/packages/frontend/editor-ui/src/features/canvas/canvas.utils.test.ts @@ -8,11 +8,11 @@ import { mapLegacyEndpointsToCanvasConnectionPort, parseCanvasConnectionHandleString, shouldIgnoreCanvasShortcut, -} from '@/utils/canvasUtils'; +} from './canvas.utils'; import type { IConnection, IConnections, INodeTypeDescription } from 'n8n-workflow'; import { NodeConnectionTypes } from 'n8n-workflow'; -import type { CanvasConnection } from '@/types'; -import { CanvasConnectionMode } from '@/types'; +import type { CanvasConnection } from './canvas.types'; +import { CanvasConnectionMode } from './canvas.types'; import type { INodeUi } from '@/Interface'; import type { Connection } from '@vue-flow/core'; import { createTestNode } from '@/__tests__/mocks'; diff --git a/packages/frontend/editor-ui/src/utils/canvasUtils.ts b/packages/frontend/editor-ui/src/features/canvas/canvas.utils.ts similarity index 98% rename from packages/frontend/editor-ui/src/utils/canvasUtils.ts rename to packages/frontend/editor-ui/src/features/canvas/canvas.utils.ts index 1549a54adaa..5a108117c8e 100644 --- a/packages/frontend/editor-ui/src/utils/canvasUtils.ts +++ b/packages/frontend/editor-ui/src/features/canvas/canvas.utils.ts @@ -5,8 +5,8 @@ import type { NodeConnectionType, } from 'n8n-workflow'; import type { INodeUi } from '@/Interface'; -import type { BoundingBox, CanvasConnection, CanvasConnectionPort } from '@/types'; -import { CanvasConnectionMode } from '@/types'; +import type { BoundingBox, CanvasConnection, CanvasConnectionPort } from './canvas.types'; +import { CanvasConnectionMode } from './canvas.types'; import type { Connection } from '@vue-flow/core'; import { isValidCanvasConnectionMode, isValidNodeConnectionType } from '@/utils/typeGuards'; import { NodeConnectionTypes } from 'n8n-workflow'; diff --git a/packages/frontend/editor-ui/src/components/canvas/Canvas.test.ts b/packages/frontend/editor-ui/src/features/canvas/components/Canvas.test.ts similarity index 98% rename from packages/frontend/editor-ui/src/components/canvas/Canvas.test.ts rename to packages/frontend/editor-ui/src/features/canvas/components/Canvas.test.ts index 2824c6c28c9..4d6b9a2399b 100644 --- a/packages/frontend/editor-ui/src/components/canvas/Canvas.test.ts +++ b/packages/frontend/editor-ui/src/features/canvas/components/Canvas.test.ts @@ -1,9 +1,9 @@ // @vitest-environment jsdom import { fireEvent, waitFor } from '@testing-library/vue'; import { createComponentRenderer } from '@/__tests__/render'; -import Canvas from '@/components/canvas/Canvas.vue'; +import Canvas from './Canvas.vue'; import { createPinia, setActivePinia } from 'pinia'; -import type { CanvasConnection, CanvasNode } from '@/types'; +import type { CanvasConnection, CanvasNode } from '../canvas.types'; import { createCanvasConnection, createCanvasNodeElement } from '@/__tests__/data'; import { NodeConnectionTypes } from 'n8n-workflow'; import type { useDeviceSupport } from '@n8n/composables/useDeviceSupport'; diff --git a/packages/frontend/editor-ui/src/components/canvas/Canvas.vue b/packages/frontend/editor-ui/src/features/canvas/components/Canvas.vue similarity index 98% rename from packages/frontend/editor-ui/src/components/canvas/Canvas.vue rename to packages/frontend/editor-ui/src/features/canvas/components/Canvas.vue index e217c2288e5..0cabae74f31 100644 --- a/packages/frontend/editor-ui/src/components/canvas/Canvas.vue +++ b/packages/frontend/editor-ui/src/features/canvas/components/Canvas.vue @@ -1,9 +1,9 @@