{"version":3,"sources":["../src/tree/moveTreeNode.ts"],"names":["MoveTreeNodePosition","moveTreeNode","treeObj","fromNodeId","toNodeId","pos","options","opts","DefaultTreeOptions","childrenKey","R","getTreeNodeRelation","fromNode","getTreeNodeInfo","toNode"],"mappings":"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","file":"chunk-ECAOWRYC.mjs","sourcesContent":["/**\n * \n *  移动树节点\n * \n *  moveTreeNode(treeObj,fromNode,toNode,position)\n * \n */\n\nimport { DefaultTreeOptions } from \"./consts\";\nimport { getTreeNodeInfo } from \"./getTreeNodeInfo\";\nimport { getTreeNodeRelation, TreeNodeRelation } from \"./getTreeNodeRelation\";\nimport { TreeNode,TreeNodeBase, TreeNodeOptions } from \"./types\";\n\n \nexport interface MoveTreeNodeOptions extends TreeNodeOptions{ \n}\n\nexport enum MoveTreeNodePosition{\n    LastChild = 0,                           // 移动为目标节点的最后一个子节点\n    FirstChild = 1,                          //\n    Next= 2,                                 //  下一个兄弟节点\n    Previous = 3                             // 上一个兄弟\n}\n\nexport function moveTreeNode<Node extends TreeNodeBase = TreeNode,IdKey extends string = 'id'>(treeObj:Node | Node[],fromNodeId: Node[IdKey],toNodeId:Node[IdKey],pos:MoveTreeNodePosition=MoveTreeNodePosition.LastChild, options?:MoveTreeNodeOptions):void {\n    const opts = Object.assign({}, DefaultTreeOptions ,options || {}) as Required<MoveTreeNodeOptions>     \n    const  { childrenKey } = opts\n    // 先检查是否允许移动\n    let R = getTreeNodeRelation<Node,IdKey>(treeObj, fromNodeId, toNodeId,options)   \n    if([TreeNodeRelation.Parent,TreeNodeRelation.Ancestors].includes(R)){\n        throw new Error(\"Move here is not allowed\")\n    }\n    \n    let fromNode = getTreeNodeInfo<Node,IdKey>(treeObj,fromNodeId)\n    let toNode = getTreeNodeInfo<Node,IdKey>(treeObj,toNodeId)\n\n    if(!(fromNode && toNode)) {\n        throw new Error(\"Unable to read node data\")\n    }\n\n    if(pos==MoveTreeNodePosition.LastChild){       \n        if(!(childrenKey in toNode.node)) (toNode.node as any)[childrenKey]=[]\n        toNode.node[childrenKey].push(fromNode.node)        \n    }else if(pos==MoveTreeNodePosition.FirstChild){\n        if(!(childrenKey in toNode.node)) (toNode.node as any)[childrenKey]=[]\n        toNode.node[childrenKey].splice(0,0,fromNode.node) \n    }else if(pos==MoveTreeNodePosition.Next){\n        if(toNode.parent){\n            toNode.parent[childrenKey].splice(toNode.index+1,0,fromNode.node) \n        }else if(Array.isArray(treeObj)){\n            treeObj.splice(toNode.index+1,0,fromNode.node) \n        }\n    }else if(pos==MoveTreeNodePosition.Previous){\n        if(toNode.parent){\n            toNode.parent[childrenKey].splice(toNode.index<=0 ? 0 : toNode.index,0,fromNode.node) \n        }else if(Array.isArray(treeObj)){\n            treeObj.splice(toNode.index<=0 ? 0 : toNode.index-1,0,fromNode.node)           \n        }\n    }else{\n        throw new TypeError('Wrong positional parameter')\n    }  \n\n    // 从原始位置移除\n    if(fromNode){\n        if(fromNode.parent){\n            fromNode.parent[childrenKey].splice(fromNode.index,1)\n        }else{  // 根节点\n            if(Array.isArray(treeObj)){\n                treeObj.splice(fromNode.index,1)\n            }else{\n                treeObj[childrenKey].splice(fromNode.index,1)\n            }\n        }\n    }\n\n}\n"]}