Add layer copy/paste and node duplication with layers

Implements two new features:
- Layer copy/paste within canvas using Ctrl+C/V
- Node duplication that preserves all layers

Layer Copy/Paste:
- Added Ctrl+V keyboard shortcut handler for pasting layers
- Intercept keydown events during capture phase to handle before ComfyUI
- Focus canvas when layer is clicked to ensure shortcuts work
- Prevent layers panel from stealing focus on mousedown

Node Duplication:
- Store source node ID during serialize for copy operations
- Track pending copy sources across node ID changes (-1 to real ID)
- Copy canvas state from source to destination in onAdded hook
- Use Map to persist copy metadata through node lifecycle
This commit is contained in:
diodiogod
2026-01-19 17:57:14 -03:00
parent 66cbcb641b
commit 27ad139cd5
6 changed files with 162 additions and 2 deletions

View File

@@ -285,6 +285,8 @@ export class CanvasLayersPanel {
if (nameElement && nameElement.classList.contains('editing')) {
return;
}
// Prevent the layers panel from stealing focus
e.preventDefault();
this.handleLayerClick(e, layer, index);
});
// --- PRAWY PRZYCISK: ODJAZNACZ LAYER ---
@@ -329,6 +331,8 @@ export class CanvasLayersPanel {
// Aktualizuj tylko wygląd (klasy CSS), bez niszczenia DOM
this.updateSelectionAppearance();
this.updateButtonStates();
// Focus the canvas so keyboard shortcuts (like Ctrl+C/V) work for layer operations
this.canvas.canvas.focus();
log.debug(`Layer clicked: ${layer.name}, selection count: ${this.canvas.canvasSelection.selectedLayers.length}`);
}
startEditingLayerName(nameElement, layer) {