perf: pan move canvas (#6242)

* perf: pan move canvas

* Update packages/web/i18n/en/workflow.json

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/index.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
Archer
2026-01-11 21:09:27 +08:00
committed by GitHub
parent c742e18e64
commit 861e8380bc
10 changed files with 42 additions and 12 deletions

View File

@@ -119,6 +119,7 @@ description: FastGPT 文档目录
- [/docs/upgrading/4-14/4143](/docs/upgrading/4-14/4143)
- [/docs/upgrading/4-14/4144](/docs/upgrading/4-14/4144)
- [/docs/upgrading/4-14/4145](/docs/upgrading/4-14/4145)
- [/docs/upgrading/4-14/4146](/docs/upgrading/4-14/4146)
- [/docs/upgrading/4-8/40](/docs/upgrading/4-8/40)
- [/docs/upgrading/4-8/41](/docs/upgrading/4-8/41)
- [/docs/upgrading/4-8/42](/docs/upgrading/4-8/42)

View File

@@ -41,6 +41,7 @@ STORAGE_S3_ENDPOINT=http://fastgpt-minio:9000 # 协议://域名(IP):端口
- mcp_server 无需更新
- Sandbox 无需更新
- AIProxy 无需更新
- mongo 5.x 版本修改成 5.0.32 版本,解决 CVE-2025-14847 漏洞。直接修改镜像 tag 成 `5.0.32`。
## 🚀 新增内容

View File

@@ -0,0 +1,16 @@
---
title: 'V4.14.6(进行中)'
description: 'FastGPT V4.14.6 更新说明'
---
## 🚀 新增内容
## ⚙️ 优化
1. 工作流触摸板移动时,遇到输入框后会被强制阻拦。
## 🐛 修复
## 插件

View File

@@ -1,5 +1,5 @@
{
"title": "4.14.x",
"description": "",
"pages": ["4145", "4144", "4143", "4142", "4141", "4140"]
"pages": ["4146", "4145", "4144", "4143", "4142", "4141", "4140"]
}

View File

@@ -20,7 +20,7 @@
"document/content/docs/introduction/development/custom-models/xinference.mdx": "2025-08-05T23:20:39+08:00",
"document/content/docs/introduction/development/design/dataset.mdx": "2025-07-23T21:35:03+08:00",
"document/content/docs/introduction/development/design/design_plugin.mdx": "2025-11-06T14:47:55+08:00",
"document/content/docs/introduction/development/docker.mdx": "2026-01-09T17:45:33+08:00",
"document/content/docs/introduction/development/docker.mdx": "2026-01-09T18:25:02+08:00",
"document/content/docs/introduction/development/faq.mdx": "2025-08-12T22:22:18+08:00",
"document/content/docs/introduction/development/intro.mdx": "2025-09-29T11:34:11+08:00",
"document/content/docs/introduction/development/migration/docker_db.mdx": "2025-07-23T21:35:03+08:00",
@@ -30,7 +30,7 @@
"document/content/docs/introduction/development/modelConfig/one-api.mdx": "2025-07-23T21:35:03+08:00",
"document/content/docs/introduction/development/modelConfig/ppio.mdx": "2025-09-29T11:52:39+08:00",
"document/content/docs/introduction/development/modelConfig/siliconCloud.mdx": "2025-08-05T23:20:39+08:00",
"document/content/docs/introduction/development/object-storage.mdx": "2026-01-06T18:19:42+08:00",
"document/content/docs/introduction/development/object-storage.mdx": "2026-01-09T18:25:02+08:00",
"document/content/docs/introduction/development/openapi/app.mdx": "2025-09-26T13:18:51+08:00",
"document/content/docs/introduction/development/openapi/chat.mdx": "2025-12-18T13:49:45+08:00",
"document/content/docs/introduction/development/openapi/dataset.mdx": "2025-09-29T11:34:11+08:00",
@@ -104,7 +104,7 @@
"document/content/docs/protocol/terms.en.mdx": "2025-12-15T23:36:54+08:00",
"document/content/docs/protocol/terms.mdx": "2025-12-15T23:36:54+08:00",
"document/content/docs/toc.en.mdx": "2025-08-04T13:42:36+08:00",
"document/content/docs/toc.mdx": "2026-01-06T18:19:42+08:00",
"document/content/docs/toc.mdx": "2026-01-09T18:25:02+08:00",
"document/content/docs/upgrading/4-10/4100.mdx": "2025-08-02T19:38:37+08:00",
"document/content/docs/upgrading/4-10/4101.mdx": "2025-09-08T20:07:20+08:00",
"document/content/docs/upgrading/4-11/4110.mdx": "2025-08-05T23:20:39+08:00",
@@ -122,7 +122,7 @@
"document/content/docs/upgrading/4-14/4142.mdx": "2025-11-18T19:27:14+08:00",
"document/content/docs/upgrading/4-14/4143.mdx": "2025-11-26T20:52:05+08:00",
"document/content/docs/upgrading/4-14/4144.mdx": "2025-12-16T14:56:04+08:00",
"document/content/docs/upgrading/4-14/4145.mdx": "2026-01-09T17:15:54+08:00",
"document/content/docs/upgrading/4-14/4145.mdx": "2026-01-11T00:59:49+08:00",
"document/content/docs/upgrading/4-8/40.mdx": "2025-08-02T19:38:37+08:00",
"document/content/docs/upgrading/4-8/41.mdx": "2025-08-02T19:38:37+08:00",
"document/content/docs/upgrading/4-8/42.mdx": "2025-08-02T19:38:37+08:00",

View File

@@ -143,7 +143,7 @@
"only_the_reference_type_is_supported": "Only reference type is supported",
"optional_value_type": "Optional Value Type",
"optional_value_type_tip": "You can specify one or more data types. When dynamically adding fields, users can only select the configured types.",
"pan_priority": "Touchpad first\n- Single finger drag to select nodes\n- Two fingers swipe to move canvas",
"pan_priority": "Touchpad first\n- Drag and drop with one finger to select nodes\n- Swipe with two fingers to move the canvas\n- Use three fingers to move nodes quickly",
"pass_returned_object_as_output_to_next_nodes": "Pass the object returned in the code as output to the next nodes. The variable name needs to correspond to the return key.",
"please_enter_node_name": "Enter the node name",
"plugin.Instruction_Tip": "You can configure an instruction to explain the purpose of the plugin. This instruction will be displayed each time the plugin is used. Supports standard Markdown syntax.",

View File

@@ -143,7 +143,7 @@
"only_the_reference_type_is_supported": "仅支持引用类型",
"optional_value_type": "可选的数据类型",
"optional_value_type_tip": "可以指定 1 个或多个数据类型,用户在动态添加字段时,仅可选择配置的类型",
"pan_priority": "触摸板优先\n- 单指拖拽框选节点\n- 双指滑动移动画布",
"pan_priority": "触摸板优先\n- 单指拖拽框选节点\n- 双指滑动移动画布\n- 三指可快速移动节点",
"pass_returned_object_as_output_to_next_nodes": "将代码中 return 的对象作为输出,传递给后续的节点。变量名需要对应 return 的 key",
"please_enter_node_name": "请输入节点名称",
"plugin.Instruction_Tip": "可以配置一段说明,以解释该插件的用途。每次使用插件前,会显示该段说明。支持标准 Markdown 语法。",

View File

@@ -143,7 +143,7 @@
"only_the_reference_type_is_supported": "僅支援引用類型",
"optional_value_type": "可選的資料類型",
"optional_value_type_tip": "可以指定一或多個資料類型,使用者在動態新增欄位時,只能選擇已設定的類型",
"pan_priority": "觸板優先\n- 單指拖框選節點\n- 雙指滑動移動畫布",
"pan_priority": "觸板優先\n- 單指拖框選節點\n- 雙指滑動移動畫布\n- 三指可快速移動節點",
"pass_returned_object_as_output_to_next_nodes": "將程式碼中 return 的物件作為輸出,傳遞給後續的節點。變數名稱需要對應 return 的鍵值",
"please_enter_node_name": "請輸入節點名稱",
"plugin.Instruction_Tip": "您可以設定一段說明來解釋這個外掛程式的用途。每次使用外掛程式前,都會顯示這段說明。支援標準 Markdown 語法。",

View File

@@ -220,10 +220,11 @@ const FlowController = React.memo(function FlowController() {
canUndo,
redo,
canRedo,
setWorkflowControlMode,
presentationMode,
fitView,
getNodes
setWorkflowControlMode,
setPresentationMode,
getNodes,
fitView
]);
return Render;

View File

@@ -18,7 +18,7 @@ import { EDGE_TYPE, FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/
import type { NodeProps } from 'reactflow';
import ReactFlow, { SelectionMode } from 'reactflow';
import { Box, IconButton, useDisclosure } from '@chakra-ui/react';
import React from 'react';
import React, { useState } from 'react';
import { WorkflowUIContext } from '../context/workflowUIContext';
const NodeSimple = dynamic(() => import('./nodes/NodeSimple'));
@@ -98,6 +98,8 @@ const Workflow = () => {
onClose: onCloseTemplate
} = useDisclosure();
const [movingCanvas, setMovingCanvas] = useState(false);
return (
<>
<Box
@@ -172,6 +174,15 @@ const Workflow = () => {
}
: {})}
onNodeDragStop={onNodeDragStop}
noWheelClassName={
!movingCanvas || workflowControlMode === 'drag' ? 'nowheel' : 'nowheel-moving'
}
onMoveStart={() => {
setMovingCanvas(true);
}}
onMoveEnd={() => {
setMovingCanvas(false);
}}
>
{!!menu && <ContextMenu />}
<FlowController />