( mutable: GraphImpl<N, E, T>, edgeIndex: EdgeIndex )
| 2443 | |
| 2444 | /** @internal */ |
| 2445 | const removeEdgeInternal = <N, E, T extends Kind = "directed">( |
| 2446 | mutable: GraphImpl<N, E, T>, |
| 2447 | edgeIndex: EdgeIndex |
| 2448 | ): boolean => { |
| 2449 | // Get edge data |
| 2450 | const edge = mutable.edges.get(edgeIndex) |
| 2451 | if (edge === undefined) { |
| 2452 | return false // Edge doesn't exist, no mutation occurred |
| 2453 | } |
| 2454 | |
| 2455 | const { source, target } = edge |
| 2456 | |
| 2457 | // Remove from adjacency lists |
| 2458 | const sourceAdjacency = mutable.adjacency.get(source) |
| 2459 | if (sourceAdjacency !== undefined) { |
| 2460 | const index = sourceAdjacency.indexOf(edgeIndex) |
| 2461 | if (index !== -1) { |
| 2462 | sourceAdjacency.splice(index, 1) |
| 2463 | } |
| 2464 | } |
| 2465 | |
| 2466 | const targetReverseAdjacency = mutable.reverseAdjacency.get(target) |
| 2467 | if (targetReverseAdjacency !== undefined) { |
| 2468 | const index = targetReverseAdjacency.indexOf(edgeIndex) |
| 2469 | if (index !== -1) { |
| 2470 | targetReverseAdjacency.splice(index, 1) |
| 2471 | } |
| 2472 | } |
| 2473 | |
| 2474 | // For undirected graphs, remove reverse connections |
| 2475 | if (mutable.type === "undirected") { |
| 2476 | const targetAdjacency = mutable.adjacency.get(target) |
| 2477 | if (targetAdjacency !== undefined) { |
| 2478 | const index = targetAdjacency.indexOf(edgeIndex) |
| 2479 | if (index !== -1) { |
| 2480 | targetAdjacency.splice(index, 1) |
| 2481 | } |
| 2482 | } |
| 2483 | |
| 2484 | const sourceReverseAdjacency = mutable.reverseAdjacency.get(source) |
| 2485 | if (sourceReverseAdjacency !== undefined) { |
| 2486 | const index = sourceReverseAdjacency.indexOf(edgeIndex) |
| 2487 | if (index !== -1) { |
| 2488 | sourceReverseAdjacency.splice(index, 1) |
| 2489 | } |
| 2490 | } |
| 2491 | } |
| 2492 | |
| 2493 | // Remove edge data |
| 2494 | mutable.edges.delete(edgeIndex) |
| 2495 | |
| 2496 | return true // Edge was successfully removed |
| 2497 | } |
| 2498 | |
| 2499 | // ============================================================================= |
| 2500 | // Edge Query Operations |
no test coverage detected