Skip to content

Commit 17a0f72

Browse files
JackLianliujuping
authored andcommitted
refactor: use insertChildren from hotkey plugin instead of from designer
1 parent e6e5ea8 commit 17a0f72

1 file changed

Lines changed: 42 additions & 4 deletions

File tree

packages/engine/src/inner-plugins/builtin-hotkey.ts

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,56 @@
11
/* eslint-disable max-len */
2-
import { isFormEvent, isNodeSchema } from '@alilc/lowcode-utils';
3-
import {
4-
insertChildren,
5-
} from '@alilc/lowcode-designer';
2+
import { isFormEvent, isNodeSchema, isNode } from '@alilc/lowcode-utils';
63
import {
74
IPublicModelPluginContext,
85
IPublicEnumTransformStage,
96
IPublicModelNode,
107
IPublicTypeNodeSchema,
8+
IPublicTypeNodeData,
119
} from '@alilc/lowcode-types';
1210
import symbols from '../modules/symbols';
1311

1412
const { nodeSymbol, documentSymbol } = symbols;
1513

14+
function insertChild(
15+
container: IPublicModelNode,
16+
originalChild: IPublicModelNode | IPublicTypeNodeData,
17+
at?: number | null,
18+
): IPublicModelNode | null {
19+
let child = originalChild;
20+
if (isNode(child) && (child as IPublicModelNode).isSlotNode) {
21+
child = (child as IPublicModelNode).exportSchema(IPublicEnumTransformStage.Clone);
22+
}
23+
let node = null;
24+
if (isNode(child)) {
25+
node = (child as IPublicModelNode);
26+
container.children?.insert(node, at);
27+
} else {
28+
node = container.document?.createNode(child) || null;
29+
if (node) {
30+
container.children?.insert(node, at);
31+
}
32+
}
33+
34+
return (node as IPublicModelNode) || null;
35+
}
36+
37+
function insertChildren(
38+
container: IPublicModelNode,
39+
nodes: IPublicModelNode[] | IPublicTypeNodeData[],
40+
at?: number | null,
41+
): IPublicModelNode[] {
42+
let index = at;
43+
let node: any;
44+
const results: IPublicModelNode[] = [];
45+
// eslint-disable-next-line no-cond-assign
46+
while ((node = nodes.pop())) {
47+
node = insertChild(container, node, index);
48+
results.push(node);
49+
index = node.index;
50+
}
51+
return results;
52+
}
53+
1654
/**
1755
* 获得合适的插入位置
1856
*/

0 commit comments

Comments
 (0)