Skip to content

Commit

Permalink
refactor(dia.ElementView): extract snap-to-grid logic into dedicated …
Browse files Browse the repository at this point in the history
…method (#2872)
  • Loading branch information
kumilingus authored Feb 4, 2025
1 parent 1eff27a commit 4f1110e
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 3 deletions.
12 changes: 9 additions & 3 deletions packages/joint-core/src/dia/ElementView.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -804,17 +804,23 @@ export const ElementView = CellView.extend({

// Drag Handlers

snapToGrid: function(evt, x, y) {
const grid = this.paper.options.gridSize;
return {
x: snapToGrid(x, grid),
y: snapToGrid(y, grid)
};
},

drag: function(evt, x, y) {

var paper = this.paper;
var grid = paper.options.gridSize;
var element = this.model;
var data = this.eventData(evt);
var { pointerOffset, restrictedArea, embedding } = data;

// Make sure the new element's position always snaps to the current grid
var elX = snapToGrid(x + pointerOffset.x, grid);
var elY = snapToGrid(y + pointerOffset.y, grid);
const { x: elX, y: elY } = this.snapToGrid(evt, x + pointerOffset.x, y + pointerOffset.y);

element.position(elX, elY, { restrictedArea, deep: true, ui: true });

Expand Down
2 changes: 2 additions & 0 deletions packages/joint-core/types/joint.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1090,6 +1090,8 @@ export namespace dia {

protected dragMagnetEnd(evt: dia.Event, x: number, y: number): void;

protected snapToGrid(evt: dia.Event, x: number, y: number): dia.Point;

protected prepareEmbedding(data: any): void;

protected processEmbedding(data: any, evt: dia.Event, x: number, y: number): void;
Expand Down

0 comments on commit 4f1110e

Please sign in to comment.