87 lines
13 KiB
JavaScript
87 lines
13 KiB
JavaScript
|
export class GridsterSwap {
|
||
|
constructor(gridsterItem) {
|
||
|
this.gridsterItem = gridsterItem;
|
||
|
this.gridster = gridsterItem.gridster;
|
||
|
}
|
||
|
destroy() {
|
||
|
this.gridster = this.gridsterItem = this.swapedItem = null;
|
||
|
}
|
||
|
swapItems() {
|
||
|
if (this.gridster.$options.swap) {
|
||
|
this.checkSwapBack();
|
||
|
this.checkSwap(this.gridsterItem);
|
||
|
}
|
||
|
}
|
||
|
checkSwapBack() {
|
||
|
if (this.swapedItem) {
|
||
|
const x = this.swapedItem.$item.x;
|
||
|
const y = this.swapedItem.$item.y;
|
||
|
this.swapedItem.$item.x = this.swapedItem.item.x || 0;
|
||
|
this.swapedItem.$item.y = this.swapedItem.item.y || 0;
|
||
|
if (this.gridster.checkCollision(this.swapedItem.$item)) {
|
||
|
this.swapedItem.$item.x = x;
|
||
|
this.swapedItem.$item.y = y;
|
||
|
}
|
||
|
else {
|
||
|
this.swapedItem.setSize();
|
||
|
this.gridsterItem.$item.x = this.gridsterItem.item.x || 0;
|
||
|
this.gridsterItem.$item.y = this.gridsterItem.item.y || 0;
|
||
|
this.swapedItem = undefined;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
restoreSwapItem() {
|
||
|
if (this.swapedItem) {
|
||
|
this.swapedItem.$item.x = this.swapedItem.item.x || 0;
|
||
|
this.swapedItem.$item.y = this.swapedItem.item.y || 0;
|
||
|
this.swapedItem.setSize();
|
||
|
this.swapedItem = undefined;
|
||
|
}
|
||
|
}
|
||
|
setSwapItem() {
|
||
|
if (this.swapedItem) {
|
||
|
this.swapedItem.checkItemChanges(this.swapedItem.$item, this.swapedItem.item);
|
||
|
this.swapedItem = undefined;
|
||
|
}
|
||
|
}
|
||
|
checkSwap(pushedBy) {
|
||
|
let gridsterItemCollision;
|
||
|
if (this.gridster.$options.swapWhileDragging) {
|
||
|
gridsterItemCollision = this.gridster.checkCollisionForSwaping(pushedBy.$item);
|
||
|
}
|
||
|
else {
|
||
|
gridsterItemCollision = this.gridster.checkCollision(pushedBy.$item);
|
||
|
}
|
||
|
if (gridsterItemCollision &&
|
||
|
gridsterItemCollision !== true &&
|
||
|
gridsterItemCollision.canBeDragged()) {
|
||
|
const gridsterItemCollide = gridsterItemCollision;
|
||
|
const copyCollisionX = gridsterItemCollide.$item.x;
|
||
|
const copyCollisionY = gridsterItemCollide.$item.y;
|
||
|
const copyX = pushedBy.$item.x;
|
||
|
const copyY = pushedBy.$item.y;
|
||
|
const diffX = copyX - copyCollisionX;
|
||
|
const diffY = copyY - copyCollisionY;
|
||
|
gridsterItemCollide.$item.x = pushedBy.item.x - diffX;
|
||
|
gridsterItemCollide.$item.y = pushedBy.item.y - diffY;
|
||
|
pushedBy.$item.x = gridsterItemCollide.item.x + diffX;
|
||
|
pushedBy.$item.y = gridsterItemCollide.item.y + diffY;
|
||
|
if (this.gridster.checkCollision(gridsterItemCollide.$item) ||
|
||
|
this.gridster.checkCollision(pushedBy.$item)) {
|
||
|
pushedBy.$item.x = copyX;
|
||
|
pushedBy.$item.y = copyY;
|
||
|
gridsterItemCollide.$item.x = copyCollisionX;
|
||
|
gridsterItemCollide.$item.y = copyCollisionY;
|
||
|
}
|
||
|
else {
|
||
|
gridsterItemCollide.setSize();
|
||
|
this.swapedItem = gridsterItemCollide;
|
||
|
if (this.gridster.$options.swapWhileDragging) {
|
||
|
this.gridsterItem.checkItemChanges(this.gridsterItem.$item, this.gridsterItem.item);
|
||
|
this.setSwapItem();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZHN0ZXJTd2FwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWdyaWRzdGVyMi9zcmMvbGliL2dyaWRzdGVyU3dhcC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxZQUFZO0lBS3ZCLFlBQVksWUFBNEM7UUFDdEQsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSyxDQUFDO0lBQzlELENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFDL0IsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsTUFBTSxDQUFDLEdBQVcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sQ0FBQyxHQUFXLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENB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
|