@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
52 lines • 5.4 kB
JavaScript
export class GridFiller {
start;
end;
isIntentional = true;
constructor(start, end) {
this.start = start;
this.end = end;
}
fillersAfterCover(start, end) {
this.isIntentional = false;
if (this.start < start) {
if (end < this.end) {
// split the filler into two
const rightHalf = new GridFiller(end + 1, this.end);
this.end = start - 1;
rightHalf.isIntentional = false;
return [this, rightHalf];
}
else {
// end might be cut-off
this.end = Math.min(this.end, start - 1);
return [this];
}
}
else {
if (end < this.end) {
// start might be cut-off
this.start = Math.max(this.start, end + 1);
return [this];
}
else {
// entire filler is covered
return [];
}
}
}
convertToGridElement(y) {
return {
type: 'blank',
layout: {
x: this.start,
y,
rows: 1,
cols: this.end - this.start + 1
}
};
}
isFullWidth(width) {
return this.start === 0 && this.end === width - 1;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1maWxsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3V0aWxpdHkvZ3JpZC1sYXlvdXQvbW9kZWwvZ3JpZC1maWxsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLFVBQVU7SUFHQztJQUF1QjtJQUZwQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBRTVCLFlBQW9CLEtBQWEsRUFBVSxHQUFXO1FBQWxDLFVBQUssR0FBTCxLQUFLLENBQVE7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFRO0lBQUksQ0FBQztJQUUzRCxpQkFBaUIsQ0FBQyxLQUFhLEVBQUUsR0FBVztRQUN4QyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxFQUFFO1lBQ3BCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ2hCLDRCQUE0QjtnQkFDNUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDckIsU0FBUyxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7Z0JBQ2hDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7YUFDNUI7aUJBQU07Z0JBQ0gsdUJBQXVCO2dCQUN2QixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNqQjtTQUNKO2FBQU07WUFDSCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNoQix5QkFBeUI7Z0JBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDM0MsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2pCO2lCQUFNO2dCQUNILDJCQUEyQjtnQkFDM0IsT0FBTyxFQUFFLENBQUM7YUFDYjtTQUNKO0lBQ0wsQ0FBQztJQUVELG9CQUFvQixDQUFDLENBQVM7UUFDMUIsT0FBTztZQUNILElBQUksRUFBRSxPQUFPO1lBQ2IsTUFBTSxFQUFFO2dCQUNKLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDYixDQUFDO2dCQUNELElBQUksRUFBRSxDQUFDO2dCQUNQLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQzthQUNsQztTQUNKLENBQUM7SUFDTixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWE7UUFDckIsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtHcmlkRWxlbWVudH0gZnJvbSAnLi9ncmlkLWVsZW1lbnQnO1xuXG5leHBvcnQgY2xhc3MgR3JpZEZpbGxlciB7XG4gICAgcHVibGljIGlzSW50ZW50aW9uYWwgPSB0cnVlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBzdGFydDogbnVtYmVyLCBwcml2YXRlIGVuZDogbnVtYmVyKSB7IH1cblxuICAgIGZpbGxlcnNBZnRlckNvdmVyKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKTogQXJyYXk8R3JpZEZpbGxlcj4ge1xuICAgICAgICB0aGlzLmlzSW50ZW50aW9uYWwgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuc3RhcnQgPCBzdGFydCkge1xuICAgICAgICAgICAgaWYgKGVuZCA8IHRoaXMuZW5kKSB7XG4gICAgICAgICAgICAgICAgLy8gc3BsaXQgdGhlIGZpbGxlciBpbnRvIHR3b1xuICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0SGFsZiA9IG5ldyBHcmlkRmlsbGVyKGVuZCArIDEsIHRoaXMuZW5kKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVuZCA9IHN0YXJ0IC0gMTtcbiAgICAgICAgICAgICAgICByaWdodEhhbGYuaXNJbnRlbnRpb25hbCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybiBbdGhpcywgcmlnaHRIYWxmXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gZW5kIG1pZ2h0IGJlIGN1dC1vZmZcbiAgICAgICAgICAgICAgICB0aGlzLmVuZCA9IE1hdGgubWluKHRoaXMuZW5kLCBzdGFydCAtIDEpO1xuICAgICAgICAgICAgICAgIHJldHVybiBbdGhpc107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZW5kIDwgdGhpcy5lbmQpIHtcbiAgICAgICAgICAgICAgICAvLyBzdGFydCBtaWdodCBiZSBjdXQtb2ZmXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydCA9IE1hdGgubWF4KHRoaXMuc3RhcnQsIGVuZCArIDEpO1xuICAgICAgICAgICAgICAgIHJldHVybiBbdGhpc107XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGVudGlyZSBmaWxsZXIgaXMgY292ZXJlZFxuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnZlcnRUb0dyaWRFbGVtZW50KHk6IG51bWJlcik6IEdyaWRFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdibGFuaycsXG4gICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICB4OiB0aGlzLnN0YXJ0LFxuICAgICAgICAgICAgICAgIHksXG4gICAgICAgICAgICAgICAgcm93czogMSxcbiAgICAgICAgICAgICAgICBjb2xzOiB0aGlzLmVuZCAtIHRoaXMuc3RhcnQgKyAxXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgaXNGdWxsV2lkdGgod2lkdGg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFydCA9PT0gMCAmJiB0aGlzLmVuZCA9PT0gd2lkdGggLSAxO1xuICAgIH1cbn1cbiJdfQ==