Browse Source

删除冗余代码

feature/071
yun 6 days ago
parent
commit
7bbd6702de
  1. 16
      src/components/__tests__/BaseNode.test.tsx
  2. 7
      src/components/__tests__/SmartTextNode.test.tsx
  3. 10
      src/components/nodes/BaseNode.tsx

16
src/components/__tests__/BaseNode.test.tsx

@ -307,21 +307,5 @@ describe("BaseNode", () => {
expect(mockZoomNodeById).toHaveBeenCalledWith("test-node-1"); expect(mockZoomNodeById).toHaveBeenCalledWith("test-node-1");
}); });
it("should skip generic node zoom inside explicitly handled double-click regions", () => {
render(
<TestWrapper>
<BaseNode
{...defaultProps}
children={<div data-testid="custom-double-click" data-skip-node-double-click-zoom>Custom</div>}
/>
</TestWrapper>
);
fireEvent.click(screen.getByTestId("custom-double-click"), { detail: 2 });
fireEvent.doubleClick(screen.getByTestId("custom-double-click"));
expect(mockZoomNodeById).not.toHaveBeenCalled();
});
}); });
}); });

7
src/components/__tests__/SmartTextNode.test.tsx

@ -3,11 +3,9 @@ import { act } from "react";
import { ReactFlowProvider } from "@xyflow/react"; import { ReactFlowProvider } from "@xyflow/react";
import { beforeEach, describe, expect, it, vi } from "vitest"; import { beforeEach, describe, expect, it, vi } from "vitest";
import { SmartTextNode } from "@/components/nodes/SmartTextNode"; import { SmartTextNode } from "@/components/nodes/SmartTextNode";
import { NodeDoubleClickZoomProvider } from "@/components/nodes/NodeDoubleClickZoomContext";
import { REQUEST_SMART_TEXT_EDIT_EVENT } from "@/utils/smartTextEditRequest"; import { REQUEST_SMART_TEXT_EDIT_EVENT } from "@/utils/smartTextEditRequest";
const mockUpdateNodeData = vi.fn(); const mockUpdateNodeData = vi.fn();
const mockZoomNodeById = vi.fn();
vi.mock("@/store/workflowStore", () => ({ vi.mock("@/store/workflowStore", () => ({
useWorkflowStore: vi.fn((selector) => { useWorkflowStore: vi.fn((selector) => {
@ -34,9 +32,7 @@ vi.mock("@/hooks/useSelectedNodeCount", () => ({
function TestWrapper({ children }: { children: React.ReactNode }) { function TestWrapper({ children }: { children: React.ReactNode }) {
return ( return (
<ReactFlowProvider> <ReactFlowProvider>
<NodeDoubleClickZoomProvider value={{ zoomNodeById: mockZoomNodeById }}> {children}
{children}
</NodeDoubleClickZoomProvider>
</ReactFlowProvider> </ReactFlowProvider>
); );
} }
@ -91,7 +87,6 @@ describe("SmartTextNode", () => {
})); }));
}); });
expect(mockZoomNodeById).not.toHaveBeenCalled();
const editor = await screen.findByRole("textbox", { name: /Write text content|编写文本内容|編寫文字內容|テキスト内容を書く/ }); const editor = await screen.findByRole("textbox", { name: /Write text content|编写文本内容|編寫文字內容|テキスト内容を書く/ });
await waitFor(() => expect(document.activeElement).toBe(editor)); await waitFor(() => expect(document.activeElement).toBe(editor));

10
src/components/nodes/BaseNode.tsx

@ -23,7 +23,6 @@ import { getEffectiveNodeHeaderModel, getNodeHeaderTitle } from "./nodeHeaderTit
import { REQUEST_SMART_TEXT_EDIT_EVENT } from "@/utils/smartTextEditRequest"; import { REQUEST_SMART_TEXT_EDIT_EVENT } from "@/utils/smartTextEditRequest";
const DEFAULT_NODE_DIMENSION = 300; const DEFAULT_NODE_DIMENSION = 300;
const SKIP_NODE_DOUBLE_CLICK_ZOOM_SELECTOR = "[data-skip-node-double-click-zoom]";
interface BaseNodeProps { interface BaseNodeProps {
id: string; id: string;
@ -308,10 +307,6 @@ export function BaseNode({
return; return;
} }
if (target?.closest(SKIP_NODE_DOUBLE_CLICK_ZOOM_SELECTOR)) {
return;
}
const lastZoom = lastNodeDoubleClickZoomRef.current; const lastZoom = lastNodeDoubleClickZoomRef.current;
if (lastZoom && lastZoom.source !== source && now - lastZoom.at < 250) { if (lastZoom && lastZoom.source !== source && now - lastZoom.at < 250) {
return; return;
@ -321,8 +316,9 @@ export function BaseNode({
event.preventDefault(); event.preventDefault();
event.stopPropagation(); event.stopPropagation();
nodeDoubleClickZoom?.zoomNodeById(id);
if (node?.type === "smartText") { if (node?.type === "smartText") {
nodeDoubleClickZoom?.zoomNodeById(id);
window.setTimeout(() => { window.setTimeout(() => {
window.dispatchEvent(new CustomEvent(REQUEST_SMART_TEXT_EDIT_EVENT, { window.dispatchEvent(new CustomEvent(REQUEST_SMART_TEXT_EDIT_EVENT, {
detail: { nodeId: id }, detail: { nodeId: id },
@ -330,8 +326,6 @@ export function BaseNode({
}, 80); }, 80);
return; return;
} }
nodeDoubleClickZoom?.zoomNodeById(id);
}; };
const handleNodeClickCapture = (event: ReactMouseEvent<HTMLDivElement>) => { const handleNodeClickCapture = (event: ReactMouseEvent<HTMLDivElement>) => {

Loading…
Cancel
Save