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", {