@@ -303,6 +303,23 @@ function SvgZone({
303
303
const polyline = useRef < Polyline > ( )
304
304
const { contentHidden, move, scale, setPosition } = useControls ( )
305
305
306
+ const localOnInitialRectChange = useCallback (
307
+ ( elem : Pick < DrawZoneElement , 'id' | 'label' | 'rect' > ) => {
308
+ if ( onInitialRectChange ) {
309
+ onInitialRectChange ( {
310
+ ...elem ,
311
+ rect : {
312
+ height : Math . round ( elem . rect . height ) ,
313
+ width : Math . round ( elem . rect . width ) ,
314
+ x : Math . round ( elem . rect . x ) ,
315
+ y : Math . round ( elem . rect . y ) ,
316
+ } ,
317
+ } )
318
+ }
319
+ } ,
320
+ [ onInitialRectChange ] ,
321
+ )
322
+
306
323
const unselectElements = useCallback ( ( ) => {
307
324
onChange ( elements . map ( unSelectElement ) )
308
325
} , [ elements , onChange ] )
@@ -785,13 +802,11 @@ function SvgZone({
785
802
786
803
if ( drawOnPointerDown && lastRect && lastRect . rect ) {
787
804
currentPosition . x = Math . min (
788
- startPosition . current . x +
789
- ( lastRect . rect . width * svgRect . width ) / 100 ,
805
+ startPosition . current . x + lastRect . rect . width * scale ,
790
806
svgRect . width ,
791
807
)
792
808
currentPosition . y = Math . min (
793
- startPosition . current . y +
794
- ( lastRect . rect . height * svgRect . height ) / 100 ,
809
+ startPosition . current . y + lastRect . rect . height * scale ,
795
810
svgRect . height ,
796
811
)
797
812
} else {
@@ -834,13 +849,11 @@ function SvgZone({
834
849
selected : true ,
835
850
}
836
851
837
- if ( onInitialRectChange ) {
838
- onInitialRectChange ( {
839
- rect : newElement . rect ,
840
- label : newElement . label ,
841
- id : newElement . id ,
842
- } )
843
- }
852
+ localOnInitialRectChange ( {
853
+ rect : newElement . rect ,
854
+ label : newElement . label ,
855
+ id : newElement . id ,
856
+ } )
844
857
845
858
onChange ( [ ...elements . map ( unSelectElement ) , newElement ] )
846
859
}
@@ -868,7 +881,7 @@ function SvgZone({
868
881
mode ,
869
882
move ,
870
883
onChange ,
871
- onInitialRectChange ,
884
+ localOnInitialRectChange ,
872
885
scale ,
873
886
setPosition ,
874
887
shape ,
@@ -1308,7 +1321,7 @@ function DrawPolygonElement({
1308
1321
}
1309
1322
} ,
1310
1323
} )
1311
- } , [ cleanHandles , createHandles , element , elements , onChange , scale ] )
1324
+ } , [ cleanHandles , createHandles , element , elements , mode , onChange , scale ] )
1312
1325
1313
1326
const onPointerDown : React . PointerEventHandler < SVGPolygonElement > =
1314
1327
useCallback (
0 commit comments