11<script setup lang="ts">
2- import { useElementBounding , useScroll } from " @vueuse/core" ;
2+ import { useElementBounding } from " @vueuse/core" ;
33import { computed , nextTick , type Ref , ref , watch } from " vue" ;
44
55import { useD3Zoom } from " @/composables/d3Zoom" ;
66import { useViewportBoundingBox } from " @/composables/viewportBoundingBox" ;
77import { maxZoom , minZoom } from " @/utils/zoomLevels" ;
88
9- import type { EdgeStyle } from " ./GraphEdges.vue" ;
10- import type { GraphLayout , GraphNode } from " ./types" ;
9+ import type { EdgeStyle , GraphLayout , GraphNode } from " ./types" ;
1110
1211import GraphEdges from " ./GraphEdges.vue" ;
1312import GraphNodeComponent from " ./GraphNode.vue" ;
@@ -19,8 +18,6 @@ interface Props {
1918 edgeStyle? : EdgeStyle ;
2019 showZoomControls? : boolean ;
2120 showMinimap? : boolean ;
22- showScrollOverlays? : boolean ;
23- showRightOverlay? : boolean ;
2421 /** Minimap component — injected by consumer to avoid domain coupling */
2522 minimapComponent? : object | null ;
2623}
@@ -30,8 +27,6 @@ const props = withDefaults(defineProps<Props>(), {
3027 edgeStyle: " orthogonal" ,
3128 showZoomControls: true ,
3229 showMinimap: true ,
33- showScrollOverlays: true ,
34- showRightOverlay: false ,
3530 minimapComponent: null ,
3631});
3732
@@ -46,8 +41,7 @@ const scale = ref(1);
4641// d3 zoom is attached to the inner canvas-container, NOT the outer wrapper.
4742// This keeps ZoomControl and minimap outside the d3 event target.
4843const canvasContainer: Ref <HTMLElement | null > = ref (null );
49- const scroll = useScroll (canvasContainer );
50- const { transform, setZoom, panBy, moveTo } = useD3Zoom (1 , minZoom , maxZoom , canvasContainer , scroll , { x: 50 , y: 50 });
44+ const { transform, setZoom, panBy, moveTo } = useD3Zoom (1 , minZoom , maxZoom , canvasContainer , { x: 50 , y: 50 });
5145
5246// Element bounding for viewport computation (needed by minimap)
5347const elementBounding = useElementBounding (canvasContainer , { windowResize: false , windowScroll: false });
6559
6660function onZoom(zoomLevel : number ) {
6761 setZoom (zoomLevel );
68- scale .value = zoomLevel ;
6962}
7063
7164const canvasStyle = computed (() => ({
@@ -132,7 +125,6 @@ watch(
132125<template >
133126 <div class =" graph-canvas rounded" >
134127 <ZoomControl v-if =" showZoomControls" :zoom-level =" scale" @onZoom =" onZoom" />
135- <div v-if =" showScrollOverlays && showRightOverlay" class =" scroll-overlay overlay-right" />
136128 <div ref =" canvasContainer" class =" canvas-container" @pointerdown =" onPointerDown" @pointerup =" onPointerUp" >
137129 <div v-if =" layout" class =" graph-node-area" :style =" canvasStyle" >
138130 <GraphEdges
@@ -186,18 +178,4 @@ watch(
186178 left : 0 ;
187179 transform-origin : 0 0 ;
188180}
189-
190- .scroll-overlay {
191- position : absolute ;
192- top : 0 ;
193- bottom : 0 ;
194- width : 1.5rem ;
195- background : $gray-200 ;
196- opacity : 0.5 ;
197- z-index : 1 ;
198-
199- & .overlay-right {
200- right : 0 ;
201- }
202- }
203181 </style >
0 commit comments