selection-utils.ts 816 B

12345678910111213141516171819202122232425
  1. /**
  2. * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
  3. * SPDX-License-Identifier: MIT
  4. */
  5. import { Rectangle } from '@flowgram.ai/utils';
  6. import { WorkflowNodeEntity } from '@flowgram.ai/free-layout-core';
  7. import { FlowNodeTransformData } from '@flowgram.ai/document';
  8. import { type Entity } from '@flowgram.ai/core';
  9. const BOUNDS_PADDING = 2;
  10. export function getSelectionBounds(
  11. selection: Entity[],
  12. ignoreOneSelect: boolean = true // 忽略单选
  13. ): Rectangle {
  14. const selectedNodes = selection.filter((node) => node instanceof WorkflowNodeEntity);
  15. // 选中单个的时候不显示
  16. return selectedNodes.length > (ignoreOneSelect ? 1 : 0)
  17. ? Rectangle.enlarge(selectedNodes.map((n) => n.getData(FlowNodeTransformData)!.bounds)).pad(
  18. BOUNDS_PADDING
  19. )
  20. : Rectangle.EMPTY;
  21. }