|
|
@ -129,8 +129,9 @@ export default class ComponentSorter<NodeType extends BaseComponentNode> extends |
|
|
return sourceNodes.reduce((addedNodes, sourceNode) => { |
|
|
return sourceNodes.reduce((addedNodes, sourceNode) => { |
|
|
if (!targetNode.canMove(sourceNode, index)) return addedNodes; |
|
|
if (!targetNode.canMove(sourceNode, index)) return addedNodes; |
|
|
if (this.isPositionChanged(targetNode, sourceNode, index)) { |
|
|
if (this.isPositionChanged(targetNode, sourceNode, index)) { |
|
|
const addedNode = this.moveNode(targetNode, sourceNode, index); |
|
|
const { index: lastIndex, addedNode } = this.moveNode(targetNode, sourceNode, index); |
|
|
addedNodes.push(addedNode); |
|
|
addedNodes.push(addedNode); |
|
|
|
|
|
index = lastIndex; |
|
|
} |
|
|
} |
|
|
index++; // Increment the index
|
|
|
index++; // Increment the index
|
|
|
return addedNodes; |
|
|
return addedNodes; |
|
|
@ -165,9 +166,9 @@ export default class ComponentSorter<NodeType extends BaseComponentNode> extends |
|
|
* @param targetNode - The node where the source node will be moved. |
|
|
* @param targetNode - The node where the source node will be moved. |
|
|
* @param sourceNode - The node being moved. |
|
|
* @param sourceNode - The node being moved. |
|
|
* @param index - The index at which to move the source node. |
|
|
* @param index - The index at which to move the source node. |
|
|
* @returns The node that was moved and added, or null if it couldn't be moved. |
|
|
* @returns An object containing the added node and its new index, or null if it couldn't be moved. |
|
|
*/ |
|
|
*/ |
|
|
private moveNode(targetNode: NodeType, sourceNode: NodeType, index: number): NodeType { |
|
|
private moveNode(targetNode: NodeType, sourceNode: NodeType, index: number) { |
|
|
const parent = sourceNode.getParent(); |
|
|
const parent = sourceNode.getParent(); |
|
|
if (parent) { |
|
|
if (parent) { |
|
|
const initialSourceIndex = parent.indexOfChild(sourceNode); |
|
|
const initialSourceIndex = parent.indexOfChild(sourceNode); |
|
|
@ -180,7 +181,7 @@ export default class ComponentSorter<NodeType extends BaseComponentNode> extends |
|
|
const addedNode = targetNode.addChildAt(sourceNode, index, { action: 'move-component' }) as NodeType; |
|
|
const addedNode = targetNode.addChildAt(sourceNode, index, { action: 'move-component' }) as NodeType; |
|
|
this.triggerEndMoveEvent(addedNode); |
|
|
this.triggerEndMoveEvent(addedNode); |
|
|
|
|
|
|
|
|
return addedNode; |
|
|
return { addedNode, index }; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
@ -212,8 +213,10 @@ export default class ComponentSorter<NodeType extends BaseComponentNode> extends |
|
|
|
|
|
|
|
|
private onTargetChange = (oldTargetNode: NodeType | undefined, newTargetNode: NodeType | undefined) => { |
|
|
private onTargetChange = (oldTargetNode: NodeType | undefined, newTargetNode: NodeType | undefined) => { |
|
|
oldTargetNode?.restNodeState(); |
|
|
oldTargetNode?.restNodeState(); |
|
|
|
|
|
const { Canvas } = this.em; |
|
|
if (!newTargetNode) { |
|
|
if (!newTargetNode) { |
|
|
this.placeholder.hide(); |
|
|
this.placeholder.hide(); |
|
|
|
|
|
Canvas.removeSpots(spotTarget); |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
newTargetNode?.setSelectedParentState(); |
|
|
newTargetNode?.setSelectedParentState(); |
|
|
@ -226,7 +229,6 @@ export default class ComponentSorter<NodeType extends BaseComponentNode> extends |
|
|
this.placeholder.show(); |
|
|
this.placeholder.show(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
const { Canvas } = this.em; |
|
|
|
|
|
const { Select, Hover, Spacing } = CanvasSpotBuiltInTypes; |
|
|
const { Select, Hover, Spacing } = CanvasSpotBuiltInTypes; |
|
|
[Select, Hover, Spacing].forEach((type) => Canvas.removeSpots({ type })); |
|
|
[Select, Hover, Spacing].forEach((type) => Canvas.removeSpots({ type })); |
|
|
Canvas.addSpot({ ...spotTarget, component: newTargetNode.model }); |
|
|
Canvas.addSpot({ ...spotTarget, component: newTargetNode.model }); |
|
|
|