File size: 1,059 Bytes
22c7264
 
 
 
 
 
a47eab3
 
 
 
22c7264
 
 
 
 
 
33909e6
22c7264
 
 
 
 
 
8755ee2
 
 
3ce1b66
8755ee2
bcf9be5
22c7264
 
f5ebead
8755ee2
 
 
 
3ce1b66
8755ee2
f5ebead
b1c5f8c
 
 
 
f5ebead
22c7264
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/**
 * Responsible for validating positions and is used
 * when manipulating positions across the application
 */
export default class Position {
  /**
   * @param {number} left
   * @param {number} top
   * @param {number} right
   * @param {number} bottom
   */
  constructor({
    left = 0,
    top = 0,
    right = 0,
    bottom = 0,
  } = {}) {
    this.left = left;
    this.right = right;
    this.top = top;
    this.bottom = bottom;
  }

  /**
   * Checks if the position is valid to be highlighted
   * @returns {boolean}
   * @public
   */
  canHighlight() {
    return this.left < this.right && this.top < this.bottom;
  }

  /**
   * Checks if the given position is equal to the passed position
   * @param position Position
   * @returns {boolean}
   * @public
   */
  equals(position) {
    return Math.round(this.left) === Math.round(position.left) &&
      Math.round(this.right) === Math.round(position.right) &&
      Math.round(this.top) === Math.round(position.top) &&
      Math.round(this.bottom) === Math.round(position.bottom);
  }
}