From 7bbd6702dec4f5c20393b033bb062b1b658d9bd7 Mon Sep 17 00:00:00 2001 From: yun Date: Tue, 7 Jul 2026 15:58:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=86=97=E4=BD=99=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/__tests__/BaseNode.test.tsx | 16 ---------------- src/components/__tests__/SmartTextNode.test.tsx | 7 +------ src/components/nodes/BaseNode.tsx | 10 ++-------- 3 files changed, 3 insertions(+), 30 deletions(-) diff --git a/src/components/__tests__/BaseNode.test.tsx b/src/components/__tests__/BaseNode.test.tsx index 7124f9aa..8c8ad46f 100644 --- a/src/components/__tests__/BaseNode.test.tsx +++ b/src/components/__tests__/BaseNode.test.tsx @@ -307,21 +307,5 @@ describe("BaseNode", () => { expect(mockZoomNodeById).toHaveBeenCalledWith("test-node-1"); }); - it("should skip generic node zoom inside explicitly handled double-click regions", () => { - render( - - Custom} - /> - - ); - - fireEvent.click(screen.getByTestId("custom-double-click"), { detail: 2 }); - fireEvent.doubleClick(screen.getByTestId("custom-double-click")); - - expect(mockZoomNodeById).not.toHaveBeenCalled(); - }); - }); }); diff --git a/src/components/__tests__/SmartTextNode.test.tsx b/src/components/__tests__/SmartTextNode.test.tsx index 72002966..bee5701e 100644 --- a/src/components/__tests__/SmartTextNode.test.tsx +++ b/src/components/__tests__/SmartTextNode.test.tsx @@ -3,11 +3,9 @@ import { act } from "react"; import { ReactFlowProvider } from "@xyflow/react"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { SmartTextNode } from "@/components/nodes/SmartTextNode"; -import { NodeDoubleClickZoomProvider } from "@/components/nodes/NodeDoubleClickZoomContext"; import { REQUEST_SMART_TEXT_EDIT_EVENT } from "@/utils/smartTextEditRequest"; const mockUpdateNodeData = vi.fn(); -const mockZoomNodeById = vi.fn(); vi.mock("@/store/workflowStore", () => ({ useWorkflowStore: vi.fn((selector) => { @@ -34,9 +32,7 @@ vi.mock("@/hooks/useSelectedNodeCount", () => ({ function TestWrapper({ children }: { children: React.ReactNode }) { return ( - - {children} - + {children} ); } @@ -91,7 +87,6 @@ describe("SmartTextNode", () => { })); }); - expect(mockZoomNodeById).not.toHaveBeenCalled(); const editor = await screen.findByRole("textbox", { name: /Write text content|编写文本内容|編寫文字內容|テキスト内容を書く/ }); await waitFor(() => expect(document.activeElement).toBe(editor)); diff --git a/src/components/nodes/BaseNode.tsx b/src/components/nodes/BaseNode.tsx index f635dc80..e9594e68 100644 --- a/src/components/nodes/BaseNode.tsx +++ b/src/components/nodes/BaseNode.tsx @@ -23,7 +23,6 @@ import { getEffectiveNodeHeaderModel, getNodeHeaderTitle } from "./nodeHeaderTit import { REQUEST_SMART_TEXT_EDIT_EVENT } from "@/utils/smartTextEditRequest"; const DEFAULT_NODE_DIMENSION = 300; -const SKIP_NODE_DOUBLE_CLICK_ZOOM_SELECTOR = "[data-skip-node-double-click-zoom]"; interface BaseNodeProps { id: string; @@ -308,10 +307,6 @@ export function BaseNode({ return; } - if (target?.closest(SKIP_NODE_DOUBLE_CLICK_ZOOM_SELECTOR)) { - return; - } - const lastZoom = lastNodeDoubleClickZoomRef.current; if (lastZoom && lastZoom.source !== source && now - lastZoom.at < 250) { return; @@ -321,8 +316,9 @@ export function BaseNode({ event.preventDefault(); event.stopPropagation(); + nodeDoubleClickZoom?.zoomNodeById(id); + if (node?.type === "smartText") { - nodeDoubleClickZoom?.zoomNodeById(id); window.setTimeout(() => { window.dispatchEvent(new CustomEvent(REQUEST_SMART_TEXT_EDIT_EVENT, { detail: { nodeId: id }, @@ -330,8 +326,6 @@ export function BaseNode({ }, 80); return; } - - nodeDoubleClickZoom?.zoomNodeById(id); }; const handleNodeClickCapture = (event: ReactMouseEvent) => {