@@ -188,23 +188,28 @@ export const CanvasSchemaProvider: React.FC<Props> = props => {
188
188
} ;
189
189
190
190
const [ clipboardTable , setClipboardTable ] = useState < TableVm | null > ( null ) ;
191
+ const [ pasteOffset , setPasteOffset ] = useState ( { x : 0 , y : 0 } ) ;
191
192
192
193
const copySelectedTable = ( ) => {
193
194
const selectedTable = canvasSchema . tables . find (
194
195
table => table . id === canvasSchema . selectedElementId
195
196
) ;
196
197
if ( selectedTable ) {
197
198
setClipboardTable ( selectedTable ) ;
199
+ setPasteOffset ( { x : 0 , y : 0 } ) ; // Reset offset on copy
198
200
}
199
201
} ;
200
202
201
203
const pasteTable = ( ) => {
202
204
if ( clipboardTable ) {
205
+ // Increment offset
206
+ const newOffset = { x : pasteOffset . x + 50 , y : pasteOffset . y + 50 } ;
207
+
203
208
const newTable : TableVm = {
204
209
...clipboardTable ,
205
210
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 ,
208
213
fields : clipboardTable . fields . map ( field => ( {
209
214
...field ,
210
215
id : crypto . randomUUID ( ) ,
@@ -216,6 +221,8 @@ export const CanvasSchemaProvider: React.FC<Props> = props => {
216
221
tables : [ ...prev . tables , newTable ] ,
217
222
isPristine : false ,
218
223
} ) ) ;
224
+
225
+ setPasteOffset ( newOffset ) ;
219
226
}
220
227
} ;
221
228
0 commit comments