Skip to content

Commit a5980df

Browse files
Added swap nodes command
1 parent 36e5ab0 commit a5980df

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

src/canvas-extensions/auto-resize-node-canvas-extension.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export default class AutoResizeNodeCanvasExtension extends CanvasExtension {
1313
))
1414

1515
this.plugin.registerEvent(this.plugin.app.workspace.on(
16-
'advanced-canvas:canvas-changed',
16+
'advanced-canvas:popup-menu-created',
1717
(canvas: Canvas) => this.onPopupMenuCreated(canvas)
1818
))
1919

src/canvas-extensions/commands-canvas-extension.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,31 @@ export default class CommandsCanvasExtension extends CanvasExtension {
124124
(canvas: Canvas) => this.flipSelection(canvas, false)
125125
)
126126
})
127+
128+
this.plugin.addCommand({
129+
id: 'swap-nodes',
130+
name: 'Swap nodes',
131+
checkCallback: CanvasHelper.canvasCommand(
132+
this.plugin,
133+
(canvas: Canvas) => !canvas.readonly && canvas.getSelectionData().nodes.length === 2,
134+
(canvas: Canvas) => {
135+
const selectedNodes = canvas.getSelectionData().nodes
136+
.map(nodeData => canvas.nodes.get(nodeData.id))
137+
.filter(node => node !== undefined) as CanvasNode[]
138+
if (selectedNodes.length !== 2) return
139+
140+
const [nodeA, nodeB] = selectedNodes
141+
const nodeAData = nodeA.getData()
142+
const nodeBData = nodeB.getData()
143+
144+
nodeA.setData({ ...nodeAData, x: nodeBData.x, y: nodeBData.y, width: nodeBData.width, height: nodeBData.height })
145+
nodeB.setData({ ...nodeBData, x: nodeAData.x, y: nodeAData.y, width: nodeAData.width, height: nodeAData.height })
146+
147+
canvas.pushHistory(canvas.getData())
148+
}
149+
)
150+
})
151+
127152
}
128153

129154
private createTextNode(canvas: Canvas) {

0 commit comments

Comments
 (0)