mirror of https://github.com/nocodb/nocodb
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
952 B
55 lines
952 B
2 years ago
|
export interface Cell {
|
||
|
row: number | null
|
||
|
col: number | null
|
||
|
}
|
||
|
|
||
|
export class CellRange {
|
||
|
_start: Cell | null
|
||
|
_end: Cell | null
|
||
|
|
||
|
constructor(start = null, end = null) {
|
||
|
this._start = start
|
||
|
this._end = end ?? this._start
|
||
|
}
|
||
|
|
||
|
get start() {
|
||
|
return {
|
||
|
row: Math.min(this._start?.row ?? NaN, this._end?.row ?? NaN),
|
||
|
col: Math.min(this._start?.col ?? NaN, this._end?.col ?? NaN),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
get end() {
|
||
|
return {
|
||
|
row: Math.max(this._start?.row ?? NaN, this._end?.row ?? NaN),
|
||
|
col: Math.max(this._start?.col ?? NaN, this._end?.col ?? NaN),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
startRange(value: Cell) {
|
||
|
if (value == null) {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
this._start = value
|
||
|
this._end = value
|
||
|
}
|
||
|
|
||
|
endRange(value: Cell) {
|
||
|
if (value == null) {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
this._end = value
|
||
|
}
|
||
|
|
||
|
clear() {
|
||
|
this._start = null
|
||
|
this._end = null
|
||
|
}
|
||
|
|
||
|
isEmpty() {
|
||
|
return this._start == null || this._end == null
|
||
|
}
|
||
|
}
|