Skip to content

Commit 108e402

Browse files
committed
Merge branch 'master' of https://github.com/Symatem/WiredPanels
2 parents 2f60799 + 78544c4 commit 108e402

File tree

1 file changed

+40
-35
lines changed

1 file changed

+40
-35
lines changed

WiredPanels.js

Lines changed: 40 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@ function setupEventListeners(node) {
4747
this.draggingMoved = false;
4848
const mousePos = this.mousePositionOfEvent((event.touches) ? event.touches[0] : event);
4949
if(event.shiftKey)
50-
this.setSelected([node], 'toggle');
50+
this.setNodeSelected(node, 'toggle');
5151
else {
52-
this.setSelected([node], true);
52+
this.setNodeSelected(node, true);
5353
switch(node.type) {
5454
case 'panel':
5555
this.dragging = new Map();
@@ -170,7 +170,7 @@ export default class WiredPanels {
170170
this.undo();
171171
break;
172172
case 65: // Meta + A
173-
this.setSelected(this.panels, true);
173+
this.setNodesSelected(this.panels, true);
174174
break;
175175
default: {
176176
const eventListener = this.eventListeners['meta'+String.fromCharCode(event.keyCode)];
@@ -268,12 +268,12 @@ export default class WiredPanels {
268268
for(const wire of this.wires)
269269
if(isSocketInBoxSelection(wire.srcSocket) && isSocketInBoxSelection(wire.dstSocket))
270270
nodes.add(wire);
271-
this.setSelected(nodes, (event.shiftKey) ? 'toggle' : true);
271+
this.setNodesSelected(nodes, (event.shiftKey) ? 'toggle' : true);
272272
}
273273
} else if(this.dragging instanceof Map)
274-
this.setSelected(this.dragging.keys(), false);
274+
this.setNodesSelected(this.dragging.keys(), false);
275275
else {
276-
this.setSelected([this.dragging.srcSocket], false);
276+
this.setNodeSelected(this.dragging.srcSocket, false);
277277
if(this.dragging.type === 'wire')
278278
animateRemoval.call(this, [this.dragging]);
279279
}
@@ -286,7 +286,7 @@ export default class WiredPanels {
286286
if(event.button > 0)
287287
return;
288288
if(!event.shiftKey && (!this.dragging || this.dragging === this.boxSelection))
289-
this.setSelected(this.selection, false);
289+
this.setNodesSelected(this.selection, false);
290290
mouseleave(event);
291291
}.bind(this);
292292

@@ -355,30 +355,33 @@ export default class WiredPanels {
355355
this.eventListeners = eventListeners;
356356
}
357357

358-
setSelected(nodes, selectionMode) {
359-
for(const node of nodes) {
360-
const wasSelected = this.selection.has(node);
361-
if(selectionMode === wasSelected)
362-
continue;
363-
if(selectionMode === 'toggle')
364-
selectionMode = !wasSelected;
365-
if(selectionMode) {
366-
this.selection.add(node);
367-
node.primaryElement.classList.add('selected');
368-
} else {
369-
this.selection.delete(node);
370-
node.primaryElement.classList.remove('selected');
371-
}
358+
setNodeSelected(node, selectionMode) {
359+
const wasSelected = this.selection.has(node);
360+
if(selectionMode === wasSelected)
361+
return;
362+
if(selectionMode === 'toggle')
363+
selectionMode = !wasSelected;
364+
if(selectionMode) {
365+
this.selection.add(node);
366+
node.primaryElement.classList.add('selected');
367+
} else {
368+
this.selection.delete(node);
369+
node.primaryElement.classList.remove('selected');
372370
}
373371
}
374372

373+
setNodesSelected(nodes, selectionMode) {
374+
for(const node of nodes)
375+
this.setNodeSelected(node, selectionMode);
376+
}
377+
375378
deleteSelected() {
376379
if(this.selection.size === 0)
377380
return;
378381
let callback;
379382
if(this.eventListeners.remove)
380383
callback = this.eventListeners.remove();
381-
if(this.selection.size > 0)
384+
if(this.selection.size > 0 || callback)
382385
this.changeGraphUndoable([], new Set(this.selection), callback);
383386
}
384387

@@ -673,8 +676,6 @@ export default class WiredPanels {
673676
changeGraph(nodesToAdd, nodesToRemove) {
674677
const panelsToUpdate = new Set();
675678
for(const node of nodesToAdd) {
676-
if(node.primaryElement.classList.contains('selected'))
677-
this.selection.add(node);
678679
switch(node.type) {
679680
case 'socket':
680681
panelsToUpdate.add(node.panel);
@@ -726,23 +727,27 @@ export default class WiredPanels {
726727
this.panels.add(node);
727728
this.panelsGroup.appendChild(node.group);
728729
animateVisibility(node.group, true);
730+
for(const socket of node.sockets)
731+
socket.primaryElement.classList.remove('selected');
729732
break;
730733
}
734+
node.primaryElement.classList.remove('selected');
731735
}
732-
const deleteSocket = function(socket) {
736+
for(const node of nodesToRemove)
737+
switch(node.type) {
738+
case 'socket':
739+
node.index = node.panel.sockets.indexOf(node);
740+
break;
741+
case 'panel':
742+
for(const socket of node.sockets)
743+
this.selection.delete(socket);
744+
break;
745+
}
746+
function deleteSocket(socket) {
733747
for(const [panel, wires] of socket.wiresPerPanel)
734748
for(const wire of wires)
735749
nodesToRemove.add(wire);
736-
}.bind(this);
737-
for(const node of nodesToRemove)
738-
if(node.type === 'socket') {
739-
if(nodesToRemove.has(node.panel)) {
740-
nodesToRemove.delete(node);
741-
node.primaryElement.classList.remove('selected');
742-
continue;
743-
}
744-
node.index = node.panel.sockets.indexOf(node);
745-
}
750+
}
746751
for(const node of nodesToRemove) {
747752
this.selection.delete(node);
748753
switch(node.type) {

0 commit comments

Comments
 (0)