MCPcopy Create free account
hub / github.com/wavetermdev/waveterm / swapNode

Function swapNode

frontend/layout/lib/layoutTree.ts:323–352  ·  view source on GitHub ↗
(layoutState: LayoutTreeState, action: LayoutTreeSwapNodeAction)

Source from the content-addressed store, hash-verified

321}
322
323export function swapNode(layoutState: LayoutTreeState, action: LayoutTreeSwapNodeAction) {
324 if (!action.node1Id || !action.node2Id) {
325 console.error("invalid swapNode action, both node1 and node2 must be defined");
326 return;
327 }
328
329 if (action.node1Id === layoutState.rootNode.id || action.node2Id === layoutState.rootNode.id) {
330 console.error("invalid swapNode action, the root node cannot be swapped");
331 return;
332 }
333 if (action.node1Id === action.node2Id) {
334 console.error("invalid swapNode action, node1 and node2 are equal");
335 return;
336 }
337
338 const parentNode1 = findParent(layoutState.rootNode, action.node1Id);
339 const parentNode2 = findParent(layoutState.rootNode, action.node2Id);
340 const parentNode1Index = parentNode1.children!.findIndex((child) => child.id === action.node1Id);
341 const parentNode2Index = parentNode2.children!.findIndex((child) => child.id === action.node2Id);
342
343 const node1 = parentNode1.children![parentNode1Index];
344 const node2 = parentNode2.children![parentNode2Index];
345
346 const node1Size = node1.size;
347 node1.size = node2.size;
348 node2.size = node1Size;
349
350 parentNode1.children[parentNode1Index] = node2;
351 parentNode2.children[parentNode2Index] = node1;
352}
353
354export function deleteNode(layoutState: LayoutTreeState, action: LayoutTreeDeleteNodeAction) {
355 if (!action?.nodeId) {

Callers 1

treeReducerMethod · 0.90

Calls 1

findParentFunction · 0.90

Tested by

no test coverage detected