mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2025-12-13 12:13:10 +00:00
refactor: use insertChildren from hotkey plugin instead of from designer
This commit is contained in:
parent
e6e5ea8a10
commit
17a0f72457
@ -1,18 +1,56 @@
|
||||
/* eslint-disable max-len */
|
||||
import { isFormEvent, isNodeSchema } from '@alilc/lowcode-utils';
|
||||
import {
|
||||
insertChildren,
|
||||
} from '@alilc/lowcode-designer';
|
||||
import { isFormEvent, isNodeSchema, isNode } from '@alilc/lowcode-utils';
|
||||
import {
|
||||
IPublicModelPluginContext,
|
||||
IPublicEnumTransformStage,
|
||||
IPublicModelNode,
|
||||
IPublicTypeNodeSchema,
|
||||
IPublicTypeNodeData,
|
||||
} from '@alilc/lowcode-types';
|
||||
import symbols from '../modules/symbols';
|
||||
|
||||
const { nodeSymbol, documentSymbol } = symbols;
|
||||
|
||||
function insertChild(
|
||||
container: IPublicModelNode,
|
||||
originalChild: IPublicModelNode | IPublicTypeNodeData,
|
||||
at?: number | null,
|
||||
): IPublicModelNode | null {
|
||||
let child = originalChild;
|
||||
if (isNode(child) && (child as IPublicModelNode).isSlotNode) {
|
||||
child = (child as IPublicModelNode).exportSchema(IPublicEnumTransformStage.Clone);
|
||||
}
|
||||
let node = null;
|
||||
if (isNode(child)) {
|
||||
node = (child as IPublicModelNode);
|
||||
container.children?.insert(node, at);
|
||||
} else {
|
||||
node = container.document?.createNode(child) || null;
|
||||
if (node) {
|
||||
container.children?.insert(node, at);
|
||||
}
|
||||
}
|
||||
|
||||
return (node as IPublicModelNode) || null;
|
||||
}
|
||||
|
||||
function insertChildren(
|
||||
container: IPublicModelNode,
|
||||
nodes: IPublicModelNode[] | IPublicTypeNodeData[],
|
||||
at?: number | null,
|
||||
): IPublicModelNode[] {
|
||||
let index = at;
|
||||
let node: any;
|
||||
const results: IPublicModelNode[] = [];
|
||||
// eslint-disable-next-line no-cond-assign
|
||||
while ((node = nodes.pop())) {
|
||||
node = insertChild(container, node, index);
|
||||
results.push(node);
|
||||
index = node.index;
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得合适的插入位置
|
||||
*/
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user