coze-studio/frontend/packages/components/resource-tree/src/node-registries.ts

55 lines
1.6 KiB
TypeScript

/*
* Copyright 2025 coze-dev Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {
type FlowNodeJSON,
FlowNodeBaseType,
type FlowNodeEntity,
type FlowNodeRegister,
} from '@flowgram-adapter/fixed-layout-editor';
/**
* BlockOrderIcon-free branch nodes
*/
export const Split: FlowNodeRegister = {
type: 'split',
extend: 'dynamicSplit',
onBlockChildCreate(
originParent: FlowNodeEntity,
blockData: FlowNodeJSON,
addedNodes: FlowNodeEntity[] = [], // All newly created nodes must exist here
) {
const { document } = originParent;
const parent = document.getNode(`$inlineBlocks$${originParent.id}`);
// The block node will generate an empty block node to cut the block.
const proxyBlock = document.addNode({
id: `$block$${blockData.id}`,
type: FlowNodeBaseType.BLOCK,
originParent,
parent,
});
const realBlock = document.addNode(
{
...blockData,
type: blockData.type || FlowNodeBaseType.BLOCK,
parent: proxyBlock,
},
addedNodes,
);
addedNodes.push(proxyBlock, realBlock);
return proxyBlock;
},
};