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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bnQiOlsiaW1wb3J0IHsgR3JpZHN0ZXJDb21wb25lbnRJbnRlcmZhY2UgfSBmcm9tICcuL2dyaWRzdGVyLmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBHcmlkc3Rlckl0ZW0sXG4gIEdyaWRzdGVySXRlbUNvbXBvbmVudEludGVyZmFjZVxufSBmcm9tICcuL2dyaWRzdGVySXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29tcGFjdFR5cGUgfSBmcm9tICcuL2dyaWRzdGVyQ29uZmlnLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBHcmlkc3RlckNvbXBhY3Qge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGdyaWRzdGVyOiBHcmlkc3RlckNvbXBvbmVudEludGVyZmFjZSkge31cblxuICBkZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZ3JpZHN0ZXIgPSBudWxsITtcbiAgfVxuXG4gIGNoZWNrQ29tcGFjdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ncmlkc3Rlci4kb3B0aW9ucy5jb21wYWN0VHlwZSAhPT0gQ29tcGFjdFR5cGUuTm9uZSkge1xuICAgICAgaWYgKHRoaXMuZ3JpZHN0ZXIuJG9wdGlvbnMuY29tcGFjdFR5cGUgPT09IENvbXBhY3RUeXBlLkNvbXBhY3RVcCkge1xuICAgICAgICB0aGlzLmNoZWNrQ29tcGFjdE1vdmVtZW50KCd5JywgLTEpO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgdGhpcy5ncmlkc3Rlci4kb3B0aW9ucy5jb21wYWN0VHlwZSA9PT0gQ29tcGFjdFR5cGUuQ29tcGFjdExlZnRcbiAgICAgICkge1xuICAgICAgICB0aGlzLmNoZWNrQ29tcGFjdE1vdmVtZW50KCd4JywgLTEpO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgdGhpcy5ncmlkc3Rlci4kb3B0aW9ucy5jb21wYWN0VHlwZSA9PT0gQ29tcGFjdFR5cGUuQ29tcGFjdFVwQW5kTGVmdFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuY2hlY2tDb21wYWN0TW92ZW1lbnQoJ3knLCAtMSk7XG4gICAgICAgIHRoaXMuY2hlY2tDb21wYWN0TW92ZW1lbnQoJ3gnLCAtMSk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0aGlzLmdyaWRzdGVyLiRvcHRpb25zLmNvbXBhY3RUeXBlID09PSBDb21wYWN0VHlwZS5Db21wYWN0TGVmdEFuZFVwXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5jaGVja0NvbXBhY3RNb3ZlbWVudCgneCcsIC0xKTtcbiAgICAgICAgdGhpcy5jaGVja0NvbXBhY3RNb3ZlbWVudCgneScsIC0xKTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRoaXMuZ3JpZHN0ZXIuJG9wdGlvbnMuY29tcGFjdFR5cGUgPT09IENvbXBhY3RUeXBlLkNvbXBhY3RSaWdodFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuY2hlY2tDb21wYWN0TW92ZW1lbnQoJ3gnLCAxKTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRoaXMuZ3JpZHN0ZXIuJG9wdGlvbnMuY29tcGFjdFR5cGUgPT09IENvbXBhY3RUeXBlLkNvbXBhY3RVcEFuZFJpZ2h0XG4gICAgICApIHtcbiAgICAgICAgdGhpcy5jaGVja0NvbXBhY3RNb3ZlbWVudCgneScsIC0xKTtcbiAgICAgICAgdGhpcy5jaGVja0NvbXBhY3RNb3ZlbWVudCgneCcsIDEpO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgdGhpcy5ncmlkc3Rlci4kb3B0aW9ucy5jb21wYWN0VHlwZSA9PT0gQ29tcGFjdFR5cGUuQ29tcGFjdFJpZ2h0QW5kVXBcbiAgICAgICkge1xuICAgICAgICB0aGlzLmNoZWNrQ29tcGFjdE1vdmVtZW50KCd4JywgMSk7XG4gICAgICAgIHRoaXMuY2hlY2tDb21wYWN0TW92ZW1lbnQoJ3knLCAtMSk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0aGlzLmdyaWRzdGVyLiRvcHRpb25zLmNvbXBhY3RUeXBlID09PSBDb21wYWN0VHlwZS5Db21wYWN0RG93blxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuY2hlY2tDb21wYWN0TW92ZW1lbnQoJ3knLCAxKTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRoaXMuZ3JpZHN0ZXIuJG9wdGlvbnMuY29tcGFjdFR5cGUgPT09IENvbXBhY3RUeXBlLkNvbXBhY3REb3duQW5kTGVmdFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuY2hlY2tDb21wYWN0TW92ZW1lbnQoJ3knLCAxKTtcbiAgICAgICAgdGhpcy5jaGVja0NvbXBhY3RNb3ZlbWVudCgneCcsIC0xKTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRoaXMuZ3JpZHN0ZXIuJG9wdGlvbnMuY29tcGFjdFR5cGUgPT09IENvbXBhY3RUeXBlLkNvbXBhY3REb3duQW5kUmlnaHRcbiAgICAgICkge1xuICAgICAgICB0aGlzLmNoZWNrQ29tcGFjdE1vdmVtZW50KCd5JywgMSk7XG4gICAgICAgIHRoaXMuY2hlY2tDb21wYWN0TW92ZW1lbnQoJ3gnLCAxKTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRoaXMuZ3JpZHN0ZXIuJG9wdGlvbnMuY29tcGFjdFR5cGUgPT09IENvbXBhY3RUeXBlLkNvbXBhY3RMZWZ0QW5kRG93blxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuY2hlY2tDb21wYWN0TW92ZW1lbnQoJ3gnLCAtMSk7XG4gICAgICAgIHRoaXMuY2hlY2tDb21wYWN0TW92ZW1lbnQoJ3knLCAxKTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRoaXMuZ3JpZHN0ZXIuJG9wdGlvbnMuY29tcGFjdFR5cGUgPT09IENvbXBhY3RUeXBlLkNvbXBhY3RSaWdodEFuZERvd25cbiAgICAgICkge1xuICAgICAgICB0aGlzLmNoZWNrQ29tcGFjdE1vdmVtZW50KCd4JywgMSk7XG4gICAgICAgIHRoaXMuY2hlY2tDb21wYWN0TW92ZW1lbnQoJ3knLCAxKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjaGVja0NvbXBhY3RJdGVtKGl0ZW06IEdyaWRzdGVySXRlbSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmdyaWRzdGVyLiRvcHRpb25zLmNvbXBhY3RUeXBlICE9PSBDb21wYWN0VHlwZS5Ob25lKSB7XG4gICAgICBpZiAodGhpcy5ncmlkc3Rlci4kb3B0aW9ucy5jb21wYWN0VHlwZSA9PT0gQ29tcGFjdFR5cGUuQ29tcGFjdFVwKSB7XG4gICAgICAgIHRoaXMubW92ZVRpbGxDb2xsaXNpb24oaXRlbSwgJ3knLCAtMSk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0aGlzLmdyaWRzdGVyLiRvcHRpb25zLmNvbXBhY3RUeXBlID09PSBDb21wYWN0VHlwZS5Db21wYWN0TGVmdFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubW92ZVRpbGxDb2xsaXNpb24oaXRlbSwgJ3gnLCAtMSk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0aGlzLmdyaWRzdGVyLiRvcHRpb25zLmNvbXBhY3RUeXBlID09PSBDb21wYWN0VHlwZS5Db21wYWN0VXBBbmRMZWZ0XG4gICAgICApIHtcbiAgICAgICAgdGhpcy5tb3ZlVGlsbENvbGxpc2lvbihpdGVtLCAneScsIC0xKTtcbiAgICAgICAgdGhpcy5tb3ZlVGlsbENvbGxpc2lvbihpdGVtLCAneCcsIC0xKTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRoaXMuZ3JpZHN0ZXIuJG9wdGlvbnMuY29tcGFjdFR5cGUgPT09IENvbXBhY3RUeXBlLkNvbXBhY3RMZWZ0QW5kVXBcbiAgICAgICkge1xuICAgICAgICB0aGlzLm1vdmVUaWxsQ29sbGlzaW9uKGl0ZW0sICd4JywgLTEpO1xuICAgICAgICB0aGlzLm1vdmVUaWxsQ29sbGlzaW9uKGl0ZW0sICd5JywgLTEpO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgdGhpcy5ncmlkc3Rlci4kb3B0aW9ucy5jb21wYWN0VHlwZSA9PT0gQ29tcGFjdFR5cGUuQ29tcGFjdFVwQW5kUmlnaHRcbiAgICAgICkge1xuICAgICAgICB0aGlzLm1vdmVUaWxsQ29sbGlzaW9uKGl0ZW0sICd5JywgLTEpO1xuICAgICAgICB0aGlzLm1vdmVUaWxsQ29sbGlzaW9uKGl0ZW0sICd4JywgMSk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0aGlzLmdyaWRzdGVyLiRvcHRpb25zLmNvbXBhY3RUeXBlID09PSBDb21wYWN0VHlwZS5Db21wYWN0RG93blxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubW92ZVRpbGxDb2xsaXNpb24oaXRlbSwgJ3knLCAxKTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRoaXMuZ3JpZHN0ZXIuJG9wdGlvbnMuY29tcGFjdFR5cGUgPT09IENvbXBhY3RUeXBlLkNvbXBhY3REb3duQW5kTGVmdFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubW92ZVRpbGxDb2xsaXNpb24oaXRlbSwgJ3knLCAxKTtcbiAgICAgICAgdGhpcy5tb3ZlVGlsbENvbGxpc2lvbihpdGVtLCAneCcsIC0xKTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRoaXMuZ3JpZHN0ZXIuJG9wdGlvbnMuY29tcGFjdFR5cGUgPT09IENvbXBhY3RUeXBlLkNvbXBhY3RMZWZ0QW5kRG93blxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubW92ZVRpbGxDb2xsaXNpb24oaXRlbSwgJ3gnLCAtMSk7XG4gICAgICAgIHRoaXMubW92ZVRpbGxDb2xsaXNpb24oaXRlbSwgJ3knLCAxKTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRoaXMuZ3JpZHN0ZXIuJG9wdGlvbnMuY29tcGFjdFR5cGUgPT09IENvbXBhY3RUeXBlLkNvbXBhY3REb3duQW5kUmlnaHRcbiAgICAgICkge1xuICAgICAgICB0aGlzLm1vdmVUaWxsQ29sbGlzaW9uKGl0ZW0sICd5JywgMSk7XG4gICAgICAgIHRoaXMubW92ZVRpbGxDb2xsaXNpb24oaXRlbSwgJ3gnLCAxKTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRoaXMuZ3JpZHN0ZXIuJG9wdGlvbnMuY29tcGFjdFR5cGUgPT09IENvbXBhY3RUeXBlLkNvbXBhY3RSaWdodEFuZERvd25cbiAgICAgICkge1xuICAgICAgICB0aGlzLm1vdmVUaWxsQ29sbGlzaW9uKGl0ZW0sICd4JywgMSk7XG4gICAgICAgIHRoaXMubW92ZVRpbGxDb2xsaXNpb24oaXRlbSwgJ3knLCAxKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNrQ29tcGFjdE1vdmVtZW50KGRpcmVjdGlvbjogJ3gnIHwgJ3knLCBkZWx0YTogbnVtYmVyKTogdm9pZCB7XG4gICAgbGV0IHdpZGdldE1vdmVkID0gZmFsc2U7XG4gICAgdGhpcy5ncmlkc3Rlci5ncmlkLmZvckVhY2goKHdpZGdldDogR3JpZHN0ZXJJdGVtQ29tcG9uZW50SW50ZXJmYWNlKSA9PiB7XG4gICAgICBpZiAod2lkZ2V0LiRpdGVtLmNvbXBhY3RFbmFibGVkICE9PSBmYWxzZSkge1xuICAgICAgICBjb25zdCBtb3ZlZCA9IHRoaXMubW92ZVRpbGxDb2xsaXNpb24od2lkZ2V0LiRpdGVtLCBkaXJlY3Rpb24sIGRlbHRhKTtcbiAgICAgICAgaWYgKG1vdmVkKSB7XG4gICAgICAgICAgd2lkZ2V0TW92ZWQgPSB0cnVlO1xuICAgICAgICAgIHdpZGdldC5pdGVtW2RpcmVjdGlvbl0gPSB3aWRnZXQuJGl0ZW1bZGlyZWN0aW9uXTtcbiAgICAgICAgICB3aWRnZXQuaXRlbUNoYW5nZWQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICh3aWRnZXRNb3ZlZCkge1xuICAgICAgdGhpcy5jaGVja0NvbXBhY3QoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1vdmVUaWxsQ29sbGlzaW9uKFxuICAgIGl0ZW06IEdyaWRzdGVySXRlbSxcbiAgICBkaXJlY3Rpb246ICd4JyB8ICd5JyxcbiAgICBkZWx0YTogbnVtYmVyXG4gICk6IGJvb2xlYW4ge1xuICAgIGl0ZW1bZGlyZWN0aW9uXSArPSBkZWx0YTtcbiAgICBpZiAodGhpcy5ncmlkc3Rlci5jaGVja0NvbGxpc2lvbihpdGVtKSkge1xuICAgICAgaXRlbVtkaXJlY3Rpb25dIC09IGRlbHRhO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1vdmVUaWxsQ29sbGlzaW9uKGl0ZW0sIGRpcmVjdGlvbiwgZGVsdGEpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG59XG4iXX0=