126 lines
20 KiB
JavaScript
126 lines
20 KiB
JavaScript
|
import { CompactType } from './gridsterConfig.interface';
|
||
|
export class GridsterCompact {
|
||
|
constructor(gridster) {
|
||
|
this.gridster = gridster;
|
||
|
}
|
||
|
destroy() {
|
||
|
this.gridster = null;
|
||
|
}
|
||
|
checkCompact() {
|
||
|
if (this.gridster.$options.compactType !== CompactType.None) {
|
||
|
if (this.gridster.$options.compactType === CompactType.CompactUp) {
|
||
|
this.checkCompactMovement('y', -1);
|
||
|
}
|
||
|
else if (this.gridster.$options.compactType === CompactType.CompactLeft) {
|
||
|
this.checkCompactMovement('x', -1);
|
||
|
}
|
||
|
else if (this.gridster.$options.compactType === CompactType.CompactUpAndLeft) {
|
||
|
this.checkCompactMovement('y', -1);
|
||
|
this.checkCompactMovement('x', -1);
|
||
|
}
|
||
|
else if (this.gridster.$options.compactType === CompactType.CompactLeftAndUp) {
|
||
|
this.checkCompactMovement('x', -1);
|
||
|
this.checkCompactMovement('y', -1);
|
||
|
}
|
||
|
else if (this.gridster.$options.compactType === CompactType.CompactRight) {
|
||
|
this.checkCompactMovement('x', 1);
|
||
|
}
|
||
|
else if (this.gridster.$options.compactType === CompactType.CompactUpAndRight) {
|
||
|
this.checkCompactMovement('y', -1);
|
||
|
this.checkCompactMovement('x', 1);
|
||
|
}
|
||
|
else if (this.gridster.$options.compactType === CompactType.CompactRightAndUp) {
|
||
|
this.checkCompactMovement('x', 1);
|
||
|
this.checkCompactMovement('y', -1);
|
||
|
}
|
||
|
else if (this.gridster.$options.compactType === CompactType.CompactDown) {
|
||
|
this.checkCompactMovement('y', 1);
|
||
|
}
|
||
|
else if (this.gridster.$options.compactType === CompactType.CompactDownAndLeft) {
|
||
|
this.checkCompactMovement('y', 1);
|
||
|
this.checkCompactMovement('x', -1);
|
||
|
}
|
||
|
else if (this.gridster.$options.compactType === CompactType.CompactDownAndRight) {
|
||
|
this.checkCompactMovement('y', 1);
|
||
|
this.checkCompactMovement('x', 1);
|
||
|
}
|
||
|
else if (this.gridster.$options.compactType === CompactType.CompactLeftAndDown) {
|
||
|
this.checkCompactMovement('x', -1);
|
||
|
this.checkCompactMovement('y', 1);
|
||
|
}
|
||
|
else if (this.gridster.$options.compactType === CompactType.CompactRightAndDown) {
|
||
|
this.checkCompactMovement('x', 1);
|
||
|
this.checkCompactMovement('y', 1);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
checkCompactItem(item) {
|
||
|
if (this.gridster.$options.compactType !== CompactType.None) {
|
||
|
if (this.gridster.$options.compactType === CompactType.CompactUp) {
|
||
|
this.moveTillCollision(item, 'y', -1);
|
||
|
}
|
||
|
else if (this.gridster.$options.compactType === CompactType.CompactLeft) {
|
||
|
this.moveTillCollision(item, 'x', -1);
|
||
|
}
|
||
|
else if (this.gridster.$options.compactType === CompactType.CompactUpAndLeft) {
|
||
|
this.moveTillCollision(item, 'y', -1);
|
||
|
this.moveTillCollision(item, 'x', -1);
|
||
|
}
|
||
|
else if (this.gridster.$options.compactType === CompactType.CompactLeftAndUp) {
|
||
|
this.moveTillCollision(item, 'x', -1);
|
||
|
this.moveTillCollision(item, 'y', -1);
|
||
|
}
|
||
|
else if (this.gridster.$options.compactType === CompactType.CompactUpAndRight) {
|
||
|
this.moveTillCollision(item, 'y', -1);
|
||
|
this.moveTillCollision(item, 'x', 1);
|
||
|
}
|
||
|
else if (this.gridster.$options.compactType === CompactType.CompactDown) {
|
||
|
this.moveTillCollision(item, 'y', 1);
|
||
|
}
|
||
|
else if (this.gridster.$options.compactType === CompactType.CompactDownAndLeft) {
|
||
|
this.moveTillCollision(item, 'y', 1);
|
||
|
this.moveTillCollision(item, 'x', -1);
|
||
|
}
|
||
|
else if (this.gridster.$options.compactType === CompactType.CompactLeftAndDown) {
|
||
|
this.moveTillCollision(item, 'x', -1);
|
||
|
this.moveTillCollision(item, 'y', 1);
|
||
|
}
|
||
|
else if (this.gridster.$options.compactType === CompactType.CompactDownAndRight) {
|
||
|
this.moveTillCollision(item, 'y', 1);
|
||
|
this.moveTillCollision(item, 'x', 1);
|
||
|
}
|
||
|
else if (this.gridster.$options.compactType === CompactType.CompactRightAndDown) {
|
||
|
this.moveTillCollision(item, 'x', 1);
|
||
|
this.moveTillCollision(item, 'y', 1);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
checkCompactMovement(direction, delta) {
|
||
|
let widgetMoved = false;
|
||
|
this.gridster.grid.forEach((widget) => {
|
||
|
if (widget.$item.compactEnabled !== false) {
|
||
|
const moved = this.moveTillCollision(widget.$item, direction, delta);
|
||
|
if (moved) {
|
||
|
widgetMoved = true;
|
||
|
widget.item[direction] = widget.$item[direction];
|
||
|
widget.itemChanged();
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
if (widgetMoved) {
|
||
|
this.checkCompact();
|
||
|
}
|
||
|
}
|
||
|
moveTillCollision(item, direction, delta) {
|
||
|
item[direction] += delta;
|
||
|
if (this.gridster.checkCollision(item)) {
|
||
|
item[direction] -= delta;
|
||
|
return false;
|
||
|
}
|
||
|
else {
|
||
|
this.moveTillCollision(item, direction, delta);
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZHN0ZXJDb21wYWN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWdyaWRzdGVyMi9zcmMvbGliL2dyaWRzdGVyQ29tcGFjdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUFvQixRQUFvQztRQUFwQyxhQUFRLEdBQVIsUUFBUSxDQUE0QjtJQUFHLENBQUM7SUFFNUQsT0FBTztRQUNMLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEtBQUssV0FBVyxDQUFDLElBQUksRUFBRTtZQUMzRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFdBQVcsS0FBSyxXQUFXLENBQUMsU0FBUyxFQUFFO2dCQUNoRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDcEM7aUJBQU0sSUFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEtBQUssV0FBVyxDQUFDLFdBQVcsRUFDOUQ7Z0JBQ0EsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3BDO2lCQUFNLElBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBVyxLQUFLLFdBQVcsQ0FBQyxnQkFBZ0IsRUFDbkU7Z0JBQ0EsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDcEM7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
|