diff --git a/inst/htmlwidgets/cytoscapeNetwork.js b/inst/htmlwidgets/cytoscapeNetwork.js
index 9c1fed6..5dfc3ac 100644
--- a/inst/htmlwidgets/cytoscapeNetwork.js
+++ b/inst/htmlwidgets/cytoscapeNetwork.js
@@ -243,7 +243,21 @@ HTMLWidgets.widget({
' ' +
(edgeItems ? '
Edge types
' + edgeItems : '') +
'' +
- 'PTM info: Hover over edges to see overlapping PTM sites.
';
+ 'PTM info: Hover over edges to see overlapping PTM sites.' +
+ '' +
+ 'Delete edge: Right-click or Ctrl+Click an edge to remove it from the network.
';
+ }
+
+ // Helper to delete an edge and notify Shiny
+ function deleteEdge(edge) {
+ if (window.Shiny) {
+ Shiny.setInputValue(el.id + "_edge_deleted", {
+ source: edge.data("source"),
+ target: edge.data("target"),
+ interaction: edge.data("interaction")
+ }, { priority: "event" });
+ }
+ edge.remove();
}
/* ── renderValue ──────────────────────────────────────────────────── */
@@ -436,11 +450,20 @@ HTMLWidgets.widget({
tooltip.style.display = "none";
});
- /* ── Evidence link on edge click ─────────────────────────────── */
- cy.on("tap", "edge", function (evt) {
+ /* ── Edge tap: Ctrl+Click → delete; plain click → evidence link ── */
+ cy.on("cxttap tap", "edge", function (evt) {
var edge = evt.target;
- // skip compound/ptm attachment edges
+ // skip ptm attachment edges
if (edge.data("edge_type") === "ptm_attachment") return;
+
+ // Ctrl+Click or Right Click → delete edge
+ if (evt.type === "cxttap" || (evt.originalEvent && evt.originalEvent.ctrlKey)) {
+ deleteEdge(edge);
+ buildLegend(cy, legendPanel);
+ return;
+ }
+
+ // Plain click → open evidence link
openSafe(edge.data("evidenceLink"));
if (window.Shiny) {
Shiny.setInputValue(el.id + "_edge_clicked", {