@@ -188,23 +188,28 @@ export const CanvasSchemaProvider: React.FC<Props> = props => {
188188 } ;
189189
190190 const [ clipboardTable , setClipboardTable ] = useState < TableVm | null > ( null ) ;
191+ const [ pasteOffset , setPasteOffset ] = useState ( { x : 0 , y : 0 } ) ;
191192
192193 const copySelectedTable = ( ) => {
193194 const selectedTable = canvasSchema . tables . find (
194195 table => table . id === canvasSchema . selectedElementId
195196 ) ;
196197 if ( selectedTable ) {
197198 setClipboardTable ( selectedTable ) ;
199+ setPasteOffset ( { x : 0 , y : 0 } ) ; // Reset offset on copy
198200 }
199201 } ;
200202
201203 const pasteTable = ( ) => {
202204 if ( clipboardTable ) {
205+ // Increment offset
206+ const newOffset = { x : pasteOffset . x + 50 , y : pasteOffset . y + 50 } ;
207+
203208 const newTable : TableVm = {
204209 ...clipboardTable ,
205210 id : crypto . randomUUID ( ) ,
206- x : clipboardTable . x + 50 ,
207- y : clipboardTable . y + 50 ,
211+ x : clipboardTable . x + newOffset . x ,
212+ y : clipboardTable . y + newOffset . y ,
208213 fields : clipboardTable . fields . map ( field => ( {
209214 ...field ,
210215 id : crypto . randomUUID ( ) ,
@@ -216,6 +221,8 @@ export const CanvasSchemaProvider: React.FC<Props> = props => {
216221 tables : [ ...prev . tables , newTable ] ,
217222 isPristine : false ,
218223 } ) ) ;
224+
225+ setPasteOffset ( newOffset ) ;
219226 }
220227 } ;
221228
0 commit comments