|
459 | 459 | // Check if element is designed to receive text input |
460 | 460 | (activeElement.hasAttribute("contenteditable") && activeElement.hasAttribute("data-brackets-id")) |
461 | 461 | ); |
| 462 | + |
| 463 | + // Check if a Phoenix tool is active (has data-phcode-internal-* attribute) |
| 464 | + const isActiveElementPhoenixTool = activeElement && Array.from(activeElement.attributes || []).some(attr => |
| 465 | + attr.name.startsWith('data-phcode-internal-') && attr.value === 'true' |
| 466 | + ); |
| 467 | + |
462 | 468 | const isInEditMode = window._LD && window._LD.getMode && window._LD.getMode() === 'edit'; |
463 | 469 |
|
464 | 470 | // for undo. refer to LivePreviewEdit.js file 'handleLivePreviewEditOperation' function |
465 | | - if (!isEditingText && isInEditMode && (e.ctrlKey || e.metaKey) && e.key.toLowerCase() === "z" && !e.shiftKey) { |
| 471 | + if (!isEditingText && !isActiveElementPhoenixTool && isInEditMode && |
| 472 | + (e.ctrlKey || e.metaKey) && e.key.toLowerCase() === "z" && !e.shiftKey) { |
466 | 473 | MessageBroker.send({ |
467 | 474 | livePreviewEditEnabled: true, |
468 | 475 | undoLivePreviewOperation: true |
469 | 476 | }); |
470 | 477 | } |
471 | 478 |
|
472 | 479 | // for redo - supports both Ctrl+Y and Ctrl+Shift+Z (Cmd+Y and Cmd+Shift+Z on Mac) |
473 | | - if (!isEditingText && isInEditMode && (e.ctrlKey || e.metaKey) && |
| 480 | + if (!isEditingText && !isActiveElementPhoenixTool && isInEditMode && (e.ctrlKey || e.metaKey) && |
474 | 481 | (e.key.toLowerCase() === "y" || (e.key.toLowerCase() === "z" && e.shiftKey))) { |
475 | 482 | MessageBroker.send({ |
476 | 483 | livePreviewEditEnabled: true, |
|
482 | 489 | if ((e.ctrlKey || e.metaKey) && e.key.toLowerCase() === "x") { |
483 | 490 |
|
484 | 491 | // Only handle element cut if not editing text and in edit mode |
485 | | - if (!isEditingText && isInEditMode && window._LD.handleCutElement) { |
| 492 | + if (!isEditingText && !isActiveElementPhoenixTool && isInEditMode && window._LD.handleCutElement) { |
486 | 493 | e.preventDefault(); |
487 | 494 | window._LD.handleCutElement(); |
488 | 495 | } |
|
492 | 499 | if ((e.ctrlKey || e.metaKey) && e.key.toLowerCase() === "c") { |
493 | 500 |
|
494 | 501 | // Only handle element copy if not editing text and in edit mode |
495 | | - if (!isEditingText && isInEditMode && window._LD.handleCopyElement) { |
| 502 | + if (!isEditingText && !isActiveElementPhoenixTool && isInEditMode && window._LD.handleCopyElement) { |
496 | 503 | e.preventDefault(); |
497 | 504 | window._LD.handleCopyElement(); |
498 | 505 | } |
|
502 | 509 | if ((e.ctrlKey || e.metaKey) && e.key.toLowerCase() === "v") { |
503 | 510 |
|
504 | 511 | // Only handle element paste if not editing text and in edit mode |
505 | | - if (!isEditingText && isInEditMode && window._LD.handlePasteElement) { |
| 512 | + if (!isEditingText && !isActiveElementPhoenixTool && isInEditMode && window._LD.handlePasteElement) { |
506 | 513 | e.preventDefault(); |
507 | 514 | window._LD.handlePasteElement(); |
508 | 515 | } |
509 | 516 | } |
510 | 517 |
|
511 | 518 | if (e.key.toLowerCase() === 'delete' || e.key.toLowerCase() === 'backspace') { |
512 | | - if (!isEditingText && isInEditMode && window._LD.handleDeleteElement) { |
| 519 | + if (!isEditingText && !isActiveElementPhoenixTool && isInEditMode && window._LD.handleDeleteElement) { |
513 | 520 | e.preventDefault(); |
514 | 521 | window._LD.handleDeleteElement(); |
515 | 522 | } |
|
0 commit comments