diff --git a/assets/scripts/src/overlay.js b/assets/scripts/src/overlay.js index a97ad0eab799e32d6212f76784528e983eccb58d..0a03025f0e067a628c9a1398578c1cc44aa19c45 100644 --- a/assets/scripts/src/overlay.js +++ b/assets/scripts/src/overlay.js @@ -11,6 +11,7 @@ export default class Overlay { this.lastSelectedPosition = new Position({}); this.window = window; + this.document = document; this.prepareContext(); this.setSize(); @@ -18,7 +19,7 @@ export default class Overlay { // Prepares the overlay prepareContext() { - const overlay = document.createElement('canvas'); + const overlay = this.document.createElement('canvas'); this.overlay = overlay; this.context = overlay.getContext('2d'); @@ -34,7 +35,6 @@ export default class Overlay { // Highlights the dom element on the screen highlight(element) { if (!element) { - // @todo - clearing the overlay return; } @@ -48,6 +48,10 @@ export default class Overlay { this.draw(); } + clear() { + this.document.body.removeChild(this.overlay); + } + draw() { // Reset the overlay this.context.clearRect(0, 0, this.overlay.width, this.overlay.height); @@ -56,15 +60,15 @@ export default class Overlay { // Cut out the cleared region this.context.clearRect( - this.selectedPosition.left - window.scrollX, - this.selectedPosition.top - window.scrollY, + this.selectedPosition.left - this.window.scrollX, + this.selectedPosition.top - this.window.scrollY, (this.selectedPosition.right - this.selectedPosition.left), (this.selectedPosition.bottom - this.selectedPosition.top), ); // Append the overlay if not there already if (!this.overlay.parentNode) { - document.body.appendChild(this.overlay); + this.document.body.appendChild(this.overlay); } } diff --git a/assets/scripts/src/sholo.js b/assets/scripts/src/sholo.js index 235df8971dfbc349301908d5d373d0ca108a466d..4136a09ad02f37521099920fbd0b721e037a303f 100644 --- a/assets/scripts/src/sholo.js +++ b/assets/scripts/src/sholo.js @@ -21,7 +21,11 @@ export default class Sholo { throw new Error('Element can only be string or the dom element'); } - const element = new Element(domElement); - this.overlay.highlight(element); + if (domElement) { + const element = new Element(domElement); + this.overlay.highlight(element); + } else { + this.overlay.clear(); + } } } diff --git a/index.html b/index.html index 06bf7d2379de08ac6c64278fbad0651d762d88e4..3c7b4cd21f4e59b9dcadd887225388d9967012ba 100644 --- a/index.html +++ b/index.html @@ -46,6 +46,7 @@