}
copyNodes() {
- const sourceNodes = this.tree.selectedNodes();
- const targetNode = this.custom_tree.selectedNode();
- this.copyNodesDisabled = !this.isCopyNodesAllowed();
- if (this.copyNodesDisabled) {
- return;
- }
- for (let sourceNode of sourceNodes) {
- // Create a deep copy of sourceNode to prevent reference issues
- let newNode = JSON.parse(JSON.stringify(sourceNode));
- newNode.children = [];
- targetNode.children.push(newNode);
- }
+ const sourceNodes = this.tree.selectedNodes();
+ const targetNode = this.custom_tree.selectedNode();
+ this.copyNodesDisabled = !this.isCopyNodesAllowed();
+ if (this.copyNodesDisabled) {
+ return;
+ }
+
+ const copySelectedNodes = (sourceNode: TreeNode, targetNode: TreeNode) => {
+ if (sourceNodes.includes(sourceNode)) {
+ let newNode = sourceNode.clone();
+ newNode.children = [];
+ targetNode.children.push(newNode);
+ targetNode = newNode;
+ }
+
+ for (let childNode of sourceNode.children) {
+ copySelectedNodes(childNode, targetNode);
+ }
+ }
+
+ copySelectedNodes(this.tree.rootNode, targetNode);
}
isDeleteNodesAllowed(): boolean {