diff --git a/packages/canvas-engine/renderer/src/layers/flow-selector-bounds-layer.tsx b/packages/canvas-engine/renderer/src/layers/flow-selector-bounds-layer.tsx index 1f3dfb9a..0a9efe63 100644 --- a/packages/canvas-engine/renderer/src/layers/flow-selector-bounds-layer.tsx +++ b/packages/canvas-engine/renderer/src/layers/flow-selector-bounds-layer.tsx @@ -1,11 +1,9 @@ import React from 'react'; import { inject, injectable } from 'inversify'; -import { - FlowNodeEntity, - FlowNodeRenderData, - FlowNodeTransformData, -} from '@flowgram.ai/document'; +import { domUtils } from '@flowgram.ai/utils'; +import { Rectangle } from '@flowgram.ai/utils'; +import { FlowNodeEntity, FlowNodeRenderData, FlowNodeTransformData } from '@flowgram.ai/document'; import { CommandRegistry, EditorState, @@ -16,8 +14,6 @@ import { observeEntity, observeEntityDatas, } from '@flowgram.ai/core'; -import { domUtils } from '@flowgram.ai/utils'; -import { Rectangle } from '@flowgram.ai/utils'; import { FlowRendererKey, FlowRendererRegistry } from '../flow-renderer-registry'; import { FlowSelectConfigEntity, SelectorBoxConfigEntity } from '../entities'; @@ -32,6 +28,7 @@ export interface SelectorBoxPopoverProps { export interface FlowSelectorBoundsLayerOptions extends LayerOptions { ignoreOneSelect?: boolean; + ignoreChildrenLength?: boolean; boundsPadding?: number; // 边框留白,默认 10 disableBackground?: boolean; // 禁用背景框 backgroundClassName?: string; // 节点下边 @@ -130,6 +127,7 @@ export class FlowSelectorBoundsLayer extends Layer node instanceof FlowNodeEntity); - - if (!selectedNodes?.length) { - return Rectangle.EMPTY; - } + const selectedNodes = selection.filter((node) => node instanceof WorkflowNodeEntity); // 选中单个的时候不显示 - if ( - ignoreOneSelect && - selectedNodes.length === 1 && - // 选中的节点不包含多个子节点 - (selectedNodes[0] as FlowNodeEntity).childrenLength <= 1 - ) { - return Rectangle.EMPTY; - } - - return Rectangle.enlarge(selectedNodes.map(n => n.getData(FlowNodeTransformData)!.bounds)).pad( - BOUNDS_PADDING, - ); + return selectedNodes.length > (ignoreOneSelect ? 1 : 0) + ? Rectangle.enlarge(selectedNodes.map((n) => n.getData(FlowNodeTransformData)!.bounds)).pad( + BOUNDS_PADDING + ) + : Rectangle.EMPTY; }