From 1792e5f19016f229da32faf0142fa279da052fa4 Mon Sep 17 00:00:00 2001 From: Louis Young <63398145+louisyoungx@users.noreply.github.com> Date: Fri, 4 Jul 2025 11:17:08 +0800 Subject: [PATCH] feat(client): autoLayout add disableFitView option (#459) --- .../src/hooks/use-auto-layout.ts | 17 +++++++++++++---- .../src/hooks/use-playground-tools.ts | 5 ++--- .../free-auto-layout-plugin/src/layout/type.ts | 2 +- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/packages/client/free-layout-editor/src/hooks/use-auto-layout.ts b/packages/client/free-layout-editor/src/hooks/use-auto-layout.ts index e40a1812..33a95783 100644 --- a/packages/client/free-layout-editor/src/hooks/use-auto-layout.ts +++ b/packages/client/free-layout-editor/src/hooks/use-auto-layout.ts @@ -20,7 +20,11 @@ import { TransformData } from '@flowgram.ai/editor'; type AutoLayoutResetFn = () => void; -type AutoLayoutFn = (options?: LayoutOptions) => Promise; +export type AutoLayoutOptions = LayoutOptions & { + disableFitView?: boolean; +}; + +type AutoLayoutFn = (options?: AutoLayoutOptions) => Promise; type UseAutoLayout = () => AutoLayoutFn; @@ -124,10 +128,15 @@ export const useAutoLayout: UseAutoLayout = () => { [document, playground] ); const autoLayout: AutoLayoutFn = useCallback( - async (options?: LayoutOptions): Promise => { - handleFitView(); + async (options: AutoLayoutOptions = {}): Promise => { + const { disableFitView } = options; + if (disableFitView !== true) { + handleFitView(); + } const resetFn: AutoLayoutResetFn = await applyLayout(options); - handleFitView(); + if (disableFitView !== true) { + handleFitView(); + } return resetFn; }, [applyLayout] diff --git a/packages/client/free-layout-editor/src/hooks/use-playground-tools.ts b/packages/client/free-layout-editor/src/hooks/use-playground-tools.ts index 05ffe595..07f69a27 100644 --- a/packages/client/free-layout-editor/src/hooks/use-playground-tools.ts +++ b/packages/client/free-layout-editor/src/hooks/use-playground-tools.ts @@ -16,10 +16,9 @@ import { usePlayground, useService, } from '@flowgram.ai/free-layout-core'; -import { LayoutOptions } from '@flowgram.ai/free-auto-layout-plugin'; import { EditorState } from '@flowgram.ai/editor'; -import { useAutoLayout } from './use-auto-layout'; +import { useAutoLayout, type AutoLayoutOptions } from './use-auto-layout'; interface SetCursorStateCallbackEvent { isPressingSpaceBar: boolean; @@ -31,7 +30,7 @@ export interface PlaygroundTools { zoomin: (easing?: boolean) => void; zoomout: (easing?: boolean) => void; fitView: (easing?: boolean) => void; - autoLayout: (options?: LayoutOptions) => Promise<() => void>; + autoLayout: (options?: AutoLayoutOptions) => Promise<() => void>; /** * 切换线条 */ diff --git a/packages/plugins/free-auto-layout-plugin/src/layout/type.ts b/packages/plugins/free-auto-layout-plugin/src/layout/type.ts index 25677a49..5f691e08 100644 --- a/packages/plugins/free-auto-layout-plugin/src/layout/type.ts +++ b/packages/plugins/free-auto-layout-plugin/src/layout/type.ts @@ -71,7 +71,7 @@ export interface LayoutParams { export interface LayoutOptions { getFollowNode?: GetFollowNode; - enableAnimation: boolean; + enableAnimation?: boolean; } export interface LayoutConfig {