get-container-transforms.ts 903 B

123456789101112131415161718192021222324252627
  1. /**
  2. * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
  3. * SPDX-License-Identifier: MIT
  4. */
  5. import { WorkflowNodeEntity } from '@flowgram.ai/free-layout-core';
  6. import { FlowNodeTransformData } from '@flowgram.ai/document';
  7. import { isContainer } from './is-container';
  8. /** 获取容器节点transforms */
  9. export const getContainerTransforms = (allNodes: WorkflowNodeEntity[]): FlowNodeTransformData[] =>
  10. allNodes
  11. .filter((node) => {
  12. if (node.originParent) {
  13. return node.getNodeMeta().selectable && node.originParent.getNodeMeta().selectable;
  14. }
  15. return node.getNodeMeta().selectable;
  16. })
  17. .filter((node) => isContainer(node))
  18. .sort((a, b) => {
  19. const aIndex = a.renderData.stackIndex;
  20. const bIndex = b.renderData.stackIndex;
  21. // 确保层级高的节点在前面
  22. return bIndex - aIndex;
  23. })
  24. .map((node) => node.transform);