|
23 | 23 | import { selectedNodeIds as graphSelectedNodeIds } from '$lib/stores/graph/state'; |
24 | 24 | import { historyStore } from '$lib/stores/history'; |
25 | 25 | import { themeStore, type Theme } from '$lib/stores/theme'; |
26 | | - import { clearSelectionTrigger, nudgeTrigger, selectNodeTrigger, registerHasSelection } from '$lib/stores/viewActions'; |
| 26 | + import { clearSelectionTrigger, nudgeTrigger, selectNodeTrigger, registerHasSelection, triggerFitView } from '$lib/stores/viewActions'; |
27 | 27 | import { dropTargetBridge } from '$lib/stores/dropTargetBridge'; |
28 | 28 | import { contextMenuStore } from '$lib/stores/contextMenu'; |
29 | 29 | import { nodeUpdatesStore } from '$lib/stores/nodeUpdates'; |
|
726 | 726 | event.preventDefault(); |
727 | 727 | contextMenuStore.openForCanvas({ x: event.clientX, y: event.clientY }); |
728 | 728 | } |
| 729 | +
|
| 730 | + function handleCanvasDoubleClick(event: MouseEvent) { |
| 731 | + // Only trigger fit view if clicking on the canvas background (not on nodes/edges) |
| 732 | + const target = event.target as HTMLElement; |
| 733 | + if (target.closest('.svelte-flow__pane')) { |
| 734 | + triggerFitView(); |
| 735 | + } |
| 736 | + } |
729 | 737 | </script> |
730 | 738 |
|
731 | 739 | <svelte:window onkeydown={handleKeydown} /> |
|
738 | 746 | ondragover={handleDragOver} |
739 | 747 | ondragenter={handleDragEnter} |
740 | 748 | ondragleave={handleDragLeave} |
| 749 | + ondblclick={handleCanvasDoubleClick} |
741 | 750 | > |
742 | 751 | {#if isFileDragOver} |
743 | 752 | <div class="drop-zone-overlay"> |
|
772 | 781 | edgesReconnectable |
773 | 782 | edgesFocusable |
774 | 783 | edgesSelectable={false} |
| 784 | + zoomOnDoubleClick={false} |
775 | 785 | proOptions={{ hideAttribution: true }} |
776 | 786 | > |
777 | 787 | <FlowUpdater pendingUpdates={pendingNodeUpdates} onUpdatesProcessed={clearPendingUpdates} /> |
|
0 commit comments