ngx-smart-spreadsheet
Version:
Lightweight spreadsheet module for Angular
41 lines • 5.43 kB
JavaScript
class Range {
constructor(r1, c1, r2, c2) {
this.r1 = r1;
this.c1 = c1;
this.r2 = r2;
this.c2 = c2;
}
calc(row, col) {
if (row < this.r1) {
this.r1 = row;
}
if (row > this.r2) {
this.r2 = row;
}
if (col < this.c1) {
this.c1 = col;
}
if (col > this.c2) {
this.c2 = col;
}
}
includes(row, col) {
return (row >= this.r1 && row <= this.r2)
&& (col >= this.c1 && col <= this.c2);
}
equals(range) {
return this.r1 === range.r1 && this.c1 === range.c1 && this.r2 === range.r2 && this.c2 === range.c2;
}
static of(row, col, row2 = row, col2 = col) {
return new Range(row, col, row2, col2);
}
static marge(a1, a2) {
const r1 = a1.r < a2.r ? a1.r : a2.r;
const r2 = a1.r > a2.r ? a1.r : a2.r;
const c1 = a1.c < a2.c ? a1.c : a2.c;
const c2 = a1.c > a2.c ? a1.c : a2.c;
return new Range(r1, c1, r2, c2);
}
}
export default Range;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnQtc3ByZWFkc2hlZXQvc3JjL2xpYi9tb2RlbC9yYW5nZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLEtBQUs7SUFDUCxZQUNXLEVBQVUsRUFDVixFQUFVLEVBQ1YsRUFBVSxFQUNWLEVBQVU7UUFIVixPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQ1YsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUNWLE9BQUUsR0FBRixFQUFFLENBQVE7UUFDVixPQUFFLEdBQUYsRUFBRSxDQUFRO0lBQ2pCLENBQUM7SUFFRSxJQUFJLENBQUMsR0FBVyxFQUFFLEdBQVc7UUFDaEMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNmLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDO1NBQ2pCO1FBQ0QsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNmLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDO1NBQ2pCO1FBQ0QsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNmLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDO1NBQ2pCO1FBQ0QsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNmLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDO1NBQ2pCO0lBQ0wsQ0FBQztJQUVNLFFBQVEsQ0FBQyxHQUFXLEVBQUUsR0FBVztRQUNwQyxPQUFPLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUM7ZUFDbEMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBWTtRQUN0QixPQUFPLElBQUksQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUN4RyxDQUFDO0lBRU0sTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFXLEVBQUUsR0FBVyxFQUFFLE9BQWUsR0FBRyxFQUFFLE9BQWUsR0FBRztRQUM3RSxPQUFPLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQVUsRUFBRSxFQUFVO1FBQ3RDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyQyxPQUFPLElBQUksS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7Q0FDSjtBQUVELGVBQWUsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEFuY2hvciBmcm9tIFwiLi9hbmNob3JcIjtcblxuY2xhc3MgUmFuZ2Uge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgcjE6IG51bWJlcixcbiAgICAgICAgcHVibGljIGMxOiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyByMjogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgYzI6IG51bWJlclxuICAgICkgeyB9XG5cbiAgICBwdWJsaWMgY2FsYyhyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHJvdyA8IHRoaXMucjEpIHtcbiAgICAgICAgICAgIHRoaXMucjEgPSByb3c7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJvdyA+IHRoaXMucjIpIHtcbiAgICAgICAgICAgIHRoaXMucjIgPSByb3c7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbCA8IHRoaXMuYzEpIHtcbiAgICAgICAgICAgIHRoaXMuYzEgPSBjb2w7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbCA+IHRoaXMuYzIpIHtcbiAgICAgICAgICAgIHRoaXMuYzIgPSBjb2w7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaW5jbHVkZXMocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAocm93ID49IHRoaXMucjEgJiYgcm93IDw9IHRoaXMucjIpXG4gICAgICAgICAgICAmJiAoY29sID49IHRoaXMuYzEgJiYgY29sIDw9IHRoaXMuYzIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlcXVhbHMocmFuZ2U6IFJhbmdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnIxID09PSByYW5nZS5yMSAmJiB0aGlzLmMxID09PSByYW5nZS5jMSAmJiB0aGlzLnIyID09PSByYW5nZS5yMiAmJiB0aGlzLmMyID09PSByYW5nZS5jMjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG9mKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlciwgcm93MjogbnVtYmVyID0gcm93LCBjb2wyOiBudW1iZXIgPSBjb2wpOiBSYW5nZSB7XG4gICAgICAgIHJldHVybiBuZXcgUmFuZ2Uocm93LCBjb2wsIHJvdzIsIGNvbDIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgbWFyZ2UoYTE6IEFuY2hvciwgYTI6IEFuY2hvcik6IFJhbmdlIHtcbiAgICAgICAgY29uc3QgcjEgPSBhMS5yIDwgYTIuciA/IGExLnIgOiBhMi5yO1xuICAgICAgICBjb25zdCByMiA9IGExLnIgPiBhMi5yID8gYTEuciA6IGEyLnI7XG4gICAgICAgIGNvbnN0IGMxID0gYTEuYyA8IGEyLmMgPyBhMS5jIDogYTIuYztcbiAgICAgICAgY29uc3QgYzIgPSBhMS5jID4gYTIuYyA/IGExLmMgOiBhMi5jO1xuICAgICAgICByZXR1cm4gbmV3IFJhbmdlKHIxLCBjMSwgcjIsIGMyKTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJhbmdlO1xuIl19